it-swarm-ja.tech

私の(第3)PCから2つのリモートホスト間のscp

リモートホストが2つあります。
Host1 - > 10.3.0.1
Host 2 - > 10.3.0.2
どちらもsshサーバーを実行しています。

Sshサーバーは、Host1のポート22とHost2のポート6969でlistenします。さて、私のローカルマシンを使って、sshを使ってHost1とHost2のどちらにもログインせずにHost1からHost2に何かをコピーする必要があります。何かのようなもの、

scp [email protected]:/path/to/file [email protected]/path/to/file

これをどのように行うことができますか?2つのホストがsshに異なるポートを使用することに注意してください。

126
uwais ibrahim

以前は、リモートシステム間でファイルをコピーするために(naively)を呼び出したときにscpがどのように機能するかは非常に不便でした。

    scp [email protected]:/home/user1/file1.txt [email protected]:/home/user2/file1.txt

scpは、まずremote1でsshセッションを開き、次にそこからremote2に対してscpを実行します。これが機能するためには、remote1にremote2の認証資格情報を設定する必要があります。

代わりにそれを行うための現代的な方法(それがほんの数年前に実装され、おそらく誰もが-3-enabled scpを持っているわけではないので "modern")には2つのステップが必要です。次のように、最初に必要な手順は~/.ssh/configを使用してremote1とremote2の両方に接続するためのすべてのオプションを設定することです。

    Host remote1.example.org
    Port 2222
    IdentityFile /path/to/Host1-id_rsa

    Host remote2.example.org
    Port 6969
    IdentityFile /path/to/Host2-id_rsa

こうすることで、必要なすべてのオプションをあいまいさなしにに渡すことが可能になります。たとえば、上記の設定なしでCLI se port 2222を使用した場合、それは不明です。 remote1またはremote2を参照していましたが、同様に暗号化キーを含むファイルも参照していました。こうすればCLIはきちんとした、簡単に残る。

次に、以下のように-3オプションを使用します。

    scp -3 [email protected]:/home/user1/file1.txt [email protected]:/home/user2/file1.txt

-3オプションは、たとえ転送の第三者であっても、コマンドが発行されたPCを介してトラフィックをルーティングするようにscpに指示します。この方法では、認証資格情報は発行元のPC、サードパーティにのみ存在する必要があります。

205
MariusMatutiae

前回これを試したとき、scpはそれを実行できませんでした。あなたのコマンドラインは大丈夫に見えます。この回避策は機能します。

ssh -p port_on_machine1 [email protected] "cat /path/to/file/one"|ssh -p port_on_machine2 [email protected] "cat >/path/to/file/two"
5
peterh

私の場合、-3引数なしで、リモートからリモートへのコピーをしていました。 '-P'パラメータで与えられたポートは1台目のサーバで動作しますが、22番ポートは2台目のサーバで使用されます。

ssh -P 1234 [email protected] [email protected]

解決策は/etc/ssh/ssh_configserver1ファイルを編集して以下の行を追加することです。

Host *.otherdomain.com
   Port  1234

このように、ポート1234は両方に使用されます。それも違うかもしれません。

コミュニケーションは直接的なので、このソリューションのスループットは以前のソリューションよりも優れています。

4
david.perez

ソースとターゲットは、scp:// [user @] Host [:port] [/ path]の形式でURIとして指定できます。

だから実行することができます:

scp -3 scp://[email protected]:22/path/to/file scp://[email protected]:6969/path/to/file
1
molabib