scpで踏み台サーバを経由した多段転送のメモ

踏み台サーバ:192.168.1.254
本番サーバ :192.168.1.1
接続ユーザ名:user
転送ファイル:a.txt

■本番サーバから踏み台サーバを経由してローカルへファイル転送
ローカル ← 踏み台サーバ ← 本番サーバ

利用方法)
scp -i 秘密鍵ファイル名(本番用) -r -o ‘ProxyCommand ssh -i 秘密鍵ファイル名(踏み台用) 踏み台ユーザ@踏み台サーバ -W %h:%p’ 本番ユーザ@本番サーバ:パス ローカスパス

実例)
scp -i ~/.ssh/id_rsa -r -o ‘ProxyCommand ssh -i ~/.ssh/id_rsa user@192.168.1.254 -W %h:%p’ user@192.168.1.1:/home/user/a.txt .

■ローカルから踏み台サーバを経由して本番サーバへファイル転送
ローカル → 踏み台サーバ → 本番サーバ

利用方法)
scp -i 秘密鍵ファイル名(本番用) -r -o ‘ProxyCommand ssh -i 秘密鍵ファイル名(踏み台用) 踏み台ユーザ@踏み台サーバ -W %h:%p’ ローカスパス 本番ユーザ@本番サーバ:パス

実例)
scp -i ~/.ssh/id_rsa -r -o ‘ProxyCommand ssh -i ~/.ssh/id_rsa user@192.168.1.254 -W %h:%p’ a.txt user@192.168.1.1:/home/user/

ProxyCommandを使用して、このように1行でできることを知らなかった。
これまでは、sshで2回ログインをしてscpを2回別々に行っていた。便利な方法があるんですね。
もちろん、winSCP等のソフトにも同等の機能があるようだ。

上記で注意が必要なのは、キーファイルの指定。
本番サーバへの接続用キーもローカルにもっておく必要がある。