2つのネットワーク間のSCP

2つのネットワーク間のSCP

同じネットワークに接続されていない 2 台のコンピュータ間でファイルを転送する必要があります。VPN 経由で両方のネットワークを認識できる 3 台目のコンピュータがあります。

3 台目のコンピューターからは、次の操作を実行できます。

scp root@firstcomputer:./file ./

そして、次の文で転送を終了します。

scp ./file root@secondcomputer:./

しかし、次のように 1 行だけで実行することはできません。

scp root@firstcomputer:./file root@secondcomputer:./

エラー応答は

ssh: connect to host secondcomputer port 22: No route to host
lost connection

おそらく、最初のコンピュータが 2 番目のコンピュータを認識できないためだと理解しています。SCP プログラムを実行するマシンだけが両方のコンピュータを認識できるという事実に対処するパラメータを SCP に与えることは可能ですか?

ちなみに、3 台目のコンピューターは Lion を搭載した Mac で、1 台目と 2 台目は Debian を実行しています。

答え1

SSH トンネルを使用できるはずです。

リモート コンピューター (「リモート」) からローカル コンピューター (「ローカル」) にファイルを転送しようとしていると仮定すると、ローカル コンピューターで次のように入力して、3 番目のコンピューター (「ゲートウェイ」) 経由でトンネルを確立します。

ssh -fNL 12345:remote:22 gatewaylogin@gateway

次に、このトンネルで SCP コマンドを無制限に実行できます (引き続きローカル コンピューターに入力します)。

scp -P 12345 remotelogin@localhost://path/to/remote/file /local/path/where/you/want/file

これを自分のネットワークでテストしたところ、完璧に動作しました。

上記の方法は、リモート ネットワークが安全な場合は問題ありませんが、安全でない場合は、ローカルとゲートウェイの間にトンネルを確立し、ゲートウェイとリモートの間に別のトンネルを確立して、共通のポート番号で 2 つをリンクする必要があります。

答え2

scp オプション -3 が、あなたが探しているものであるはずです。例に当てはめると次のようになります。

scp -3 root@firstcomputer:./file root@secondcomputer:./

-3 オプションは、2011 年初頭にリリースされた OpenSSH 5.7 で初めて導入されたことに注意してください。

答え3

これを試すことができます:

root@firstcomputer:./file /tmp && scp /tmp/file root@secondcomputer:./ && rm /tmp/file

これにより、ファイルが 3 番目のコンピューターの /tmp ディレクトリにコピーされ、成功した場合は、そのファイルが 2 番目のコンピューターに再コピーされて、クリーンアップされます。 && 演算子を使用しているため、各コマンドは、前のコマンドが成功した場合にのみ実行されます。

関連情報