概要
多段接続したいと思った時、都度自前のノートからコピペしていたのでノート無しには何もできなくなってしまった。
複数サーバを経由しなければならない時、
以下のように1台づつファイルを転送するオペレーションになりがちである。
通常転送
これでは送信元サーバで転送コマンドを叩くだけでなく、
踏み台サーバでも転送コマンドを叩かなければならない。
サーバ同士の関わりが強い状態なので、cronに処理を仕込もうにも非常にやりにくい。
多段転送
scpのProxyCommandを使った多段接続機能を使えば
転送処理の為だけにわざわざ踏み台サーバに入る必要はない。
scp -r -o "ProxyCommand ssh -i ~/.ssh/key ユーザー@踏み台 -W %h:%p" testdir ユーザー@送信先:/tmp/.
もしくは
scp -r -o "ProxyCommand ssh -i ~/.ssh/key ユーザー@踏み台 nc %h %p" testdir ユーザー@送信先:/tmp/.
上記2つの違いは、-Wオプションを使うか、nc (netcat)を使うかの違いである。
ncオプションの場合、踏み台サーバにもncが使えるようにしておく必要がある。
一方で-Wオプションの場合は、そこを意識しなくて良い。
%h %pはそれぞれホスト、ポートを表している。
※上記コマンドは鍵認証を用いている為、パスワード認証で行う場合は -i ~/.ssh/key を適宜削除すること。
注意事項
sshで接続すると接続元に書かれる
.ssh/known_hostsは踏み台には書かれず、送信元に書かれる。
複数の環境を持っており、その数だけ踏み台サーバがあり、
送信先のIPが同じ(192.168.1.201)の場合、
送信元の ~/.ssh/known_hosts ファイルをメンテナンスする必要がある。