重要な注意:「ローカル マシン」と呼ばれるマシンはまったく関係ありません。本当の話は 100.100.100.1
に乗ったときから始まる . scp
のコンテキストで この回答のコンテキストでは、「ローカル」は scp
のマシンです あなたによって呼び出されます。
最初の [コマンド] が失敗するのはなぜですか?
2 つの (正式な) リモート ホスト間でコピーしようとしました。 scp
[email protected]:/path/1/
を認識する 非ローカル パスとして。関係ない [email protected]
ローカル マシンを指します。このツールは、リモートに見えるアドレスがローカル マシンを指しているかどうかをチェックしません (チェックすべきではありません)。ソースをリモートのように参照するだけで、scp
を作成できます。 リモートとして扱います。また、目的地は遠隔地でした。
-3
の有無にかかわらず、2 つのリモート ホスト間のコピーを実行できます。 オプション:
-3
2 つのリモート ホスト間のコピーは、ローカル ホストを介して転送されます。 このオプションを使用しない場合、データは 2 つのリモート ホスト間で直接コピーされます。 […]
太字の部分はあなたのケースに適用されます (あなたの scp
であっても) -3
をサポートしていません ).
-v
を使用する場合 最初のコマンドで
scp -v -i ~/keyfile -r [email protected]:/path/1/ [email protected]:/path/2/
scp
が表示されます -i
で指定されたキーを使用して、ローカル ホストからソース ホスト (「ちなみに」同じホスト) に接続します。 . (どうやら、ホストはこのキーを受け入れるように構成されているようです。おそらく、他のサーバーが同じキーを使用して接続しているためです。)
次に、別の scp
が表示されます ソース ホストで呼び出されます。コマンドは次のとおりです:
scp -v -r /path/1/ [email protected]:/path/2/
-v
そして -r
彼らはあなたのローカルコマンドにあったのでそこにいます。ソース パスはローカル パスに変換されます。行き先は変わらない。このコマンドが正常に実行されると、データは「2 つのリモート ホスト間で直接コピー」されます。
-i
がないことに注意してください . -i ~/keyfile
すべき そこにいる?というか -i /home/cindy/keyfile
とか、ぐらい? (ローカルの scp
ローカル シェルがチルダを展開した後、このような結果が得られました)。
いいえ。一般に、リモート ソース ホストはローカル ホストとは異なる場合があります (通常は異なります)。ローカル ホストに有効なパスは、リモート ホスト上の任意の場所を指している場合もあれば、何も指していない場合もあります。 scp
の場合 ソースホストで -i
で呼び出された 、それは解決できるよりも多くの問題を引き起こすでしょう。いいことだ -i
ソース ホストで呼び出されたコマンドには反映されません。しかしその後、ホストはデフォルトのキーまたはその設定で使用するように指示されたものを使用して宛先に接続します。
あなたの場合、ローカルの ~/keyfile
が必要なようです 宛先ホストに接続します。ソース ホストは正しいファイルを保持します (この特定のケースでは、ローカルとソースが同じマシンであるため) が、 scp
実際に宛先に接続するコマンドには -i
がありません (一般的にそうあるべきです) したがって、キーは使用されません。
2 番目のコマンドはローカル パスをソースとして使用しましたが、宛先のみがリモートでした。この場合、-i
で指定されたキー 計画どおり、ローカル ホストから宛先ホストへの接続に使用されました。したがって、うまくいきました。
~/keyfile
を自動的に使用するようにローカル マシンを構成したかどうかに注意してください。 他のサーバーに接続する (IdentityFile
~/.ssh/config
で )、最初のコマンドが機能します。ローカル ホストは、目的地に接続するように自分自身に指示するためだけに、不必要に自分自身に接続しますが、それでも機能します。最初の接続では ~/keyfile
を使用します -i
のため 、2 番目の接続は ~/keyfile
を使用します 構成のためです。
scp マニュアルより、-3 オプションの説明:2 つのリモート ホスト間のコピーは、ローカル ホストを介して転送されます。このオプションを使用しない場合、データは 2 つのリモート ホスト間で直接コピーされます。 scp は両方のホストのパスワードやパスフレーズを要求できないため、このオプションは進行状況メーターを無効にし、2 番目のホストのバッチ モードを選択することに注意してください。
説明によると、最初に失敗するのは、2 つのリモート サーバーが直接通信するためです (実際には 100.100.100.1 サーバーが ssh 経由で 100.100.100.2 サーバーと通信します)。したがって、オプションが必要です:
<オール>