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


12

同じネットワークに接続されていない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で、2番目のコンピューターはDebianを実行しています。

回答:


3

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


21

scpオプション-3は、あなたが探しているものでなければなりません。あなたの例にそれを置くには:

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

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


私のscpコマンドは実装されていない-3私はCOMAND I GET SCPを実行すると:不正なオプション- 3用法:SCP [-1246BCEpqrv] ...
JorgeO

1
そのとおりです。-3はOpenSSHの最新バージョンでのみ利用できますが、Debianがまだ実装しているかどうかはわかりません。
リリンド

ああ、それについてすみません。バージョン要件に関する回答を更新しました。
-andol

1

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

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

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


&&演算子について知りませんでした。使用するよりも良い。
-JorgeO

これは、回避しようとしていた最初の例で使用された元の質問と同じ手法です(コンピューターAからローカルマシンにコピーし、ローカルファイルをコンピューターBにコピーします)。
ジェイソンC 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.