Edited at

ssh/scp多段接続〜踏み台サーバを越えて〜

More than 1 year has passed since last update.


概要

多段接続したいと思った時、都度自前のノートからコピペしていたのでノート無しには何もできなくなってしまった。

複数サーバを経由しなければならない時、

以下のように1台づつファイルを転送するオペレーションになりがちである。


通常転送

スクリーンショット 2018-01-24 18.20.23.png

これでは送信元サーバで転送コマンドを叩くだけでなく、

踏み台サーバでも転送コマンドを叩かなければならない。

サーバ同士の関わりが強い状態なので、cronに処理を仕込もうにも非常にやりにくい。


多段転送

スクリーンショット 2018-01-24 18.02.05.png

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 ファイルをメンテナンスする必要がある。