質問: local から踏み台(ホスト名 relay とする)にはユーザ名 local_user で relay から remote にはユーザ名 remote_user でそれぞれ ssh ができて relay 内で `sudo su - remote_user` で local_user から remote_user にユーザを切り替える権限をもっています relay 内で remote_user で scp して /home/remote_user にファイルをもってくることはできたのですが /home/local_user /home/remote_user はお互いにパーミション権限がなくファイル移動できず ローカルからローカルユーザ権限で remote_user 権限のファイルを scp することができません ファイルパーミションをあけて /tmp とか誰でも書き込める場所に移動して scp することはできますが 毎回やるのがかなり手間なので簡単にリモートファイルをコピーする方法はないでしょうか たとえば踏み台の remote_user で ssh -vNL 10022:localhost:22 remote というポートフォワーディングをはっておいて ローカルから scp -P 10022 relay:/リモートファイルのパス とうっても動きません... 追記: ローカルで ssh -vNL 10022:localhost:10022 relay というトンネルをさらに作って local:10022 => relay:10022 => remote:22 という2段階のフォワードをつくってからローカル 10022 に scp -P 10022 remote_user@localhost:/リモートファイルのパス とうつと ssh_exchange_identification: Connection closed by remote host となってトンネル自体はできてるみたいですが認証がうまくいきません 追記 local で ssh relay だけで relay にログインできます ( パスフレーズを設定してるんですが UseKeychain yes をいれてします ) relay では sudo su - abc_user というコマンドで別ユーザになって ssh remote とうてばパスフレーズなしでログインして remote の xyz というユーザになります 追記: 現状のファイルコピー手順 どうにかこれを簡略化したいです ``` ssh relay sudo su - remote_user scp remote:remote.txt /tmp chmod go+r /tmp/remote.txt 別ターミナルを開いて(localで) scp relay:/tmp/remote.txt ./ 元のターミナル(relay上で) rm /tmp/remote.txt ```
回答: remote:22 にポートフォワードしている限りは、普通に remote の sshd とやりとりすることになるので当然認証が走りますよね。 remote の sshd の設定が公開鍵認証のみになっているのであれば、通常通り鍵やパスフレーズが必要です。 ポートフォワードのみだと単に多段 ssh の簡略化以上の効力は無いと思います。 ファイルコピーを楽にする方法はいくつかあると思いますが、ポリシーにもよるのでズバリな回答は難しい気がしますね。 とりあえず簡単に思いつくのは下記くらいですが。。 ・remote にログイン可能な鍵を local にも置いて、ProxyCommand もしくはポートフォワードで多段 ssh を簡略化する(コピー用のアカウントと鍵を用意すればセキュリティ的にもそれほど問題にならないと思います) ・relay 上の特定の領域をファイル同期用の領域として、cron で ssh+rsync などで自動的に remote 上に同期する仕掛けを設定しておく。local からはその relay 上の同期用の領域に scp する