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\\\" \
\" \
"