2 つのサーバー間の SCP ファイルは非常に少数のサーバーを通過します。

2 つのサーバー間の SCP ファイルは非常に少数のサーバーを通過します。

server-aからserver-dにファイルをコピーしたいが、server-bとserver-cからのみserver-dにアクセスできます。サーバーaはサーバーbにのみアクセスでき、サーバーbはサーバーcにのみアクセスでき、サーバーcはサーバーdにのみアクセスできます。

現在私はそうします:

server-a> scp /tmp/file.txt user@server-b
server-a> ssh user@server-b
server-b> scp /tmp/file.txt user@server-c
server-b> ssh user@server-c
server-c> scp /tmp/file.txt user@server-d

これは5,6,7,..サーバーを介して行うことができます。

1つのコマンドでこれを実行できますか?

答え1

ProxyCommandあなたは見る必要がありますマニュアルページ。例は次のとおりです。

Host serverB
HostName serverA.com
User someuser
ProxyCommand ssh -q serverB -W %h:%p  # -W is supported by a recent OpenSSH
# or for older versions or other implementations
# ProxyCommand ssh -q serverB nc %h %p

これにより、serverAを入力して接続できssh serverB、次にserverBに接続します。これは次のように簡単に拡張できます。

答え2

最善の方法は、おそらくトンネルを設定し、そのcatトンネルを介してファイルを転送することです。

cat file.txt | ssh -A -t user@server-b \
   "cat | ssh -A user@server-c         \
      \"cat | ssh -A user@server-d     \
         \\\"cat > /tmp/file.txt\\\"   \
      \"                               \
   "

関連情報