web-dev-qa-db-ja.com

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

それはおそらく、1台目のコンピュータが2台目のコンピュータを認識できないためだと思います。 SCPプログラムを実行するマシンが両方のコンピューターを表示できる唯一のマシンであるという事実を扱うパラメーターをSCPに与えることは可能ですか?

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

12
JorgeO

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つを共通のポート番号でリンクする必要があります。

3
mantipula

Scpオプション-3を探しているはずです。あなたの例にそれを置くために:

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

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

21
andol

あなたはこれを試すことができます:

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

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

1
Rilindo