GNU/Linux >> Linux の 問題 >  >> Linux

scp にローカル IP とユーザー名を追加すると公開鍵エラーが返されるのはなぜですか?

重要な注意:「ローカル マシン」と呼ばれるマシンはまったく関係ありません。本当の話は 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 サーバーと通信します)。したがって、オプションが必要です:

<オール>
  • -3 オプションを使用してください。
  • キーファイル ssh キーで認証できるように 2 台のリモート サーバーを構成します。 100.100.100.1 から 100.100.100.2 サーバーに ssh キーでログインできる場合、元のコマンドが機能します。

  • Linux
    1. 私の公共図書館がLinuxとオープンソースを選ぶ理由

    2. 公開鍵の取得は許可されていません–WSO2MySQLエラー

    3. Env X =(){:;}; Command’Bashは、なぜそれが安全でないのですか?

    1. なぜScpはとても遅いのですか、そしてそれをより速くする方法は?

    2. 「ホストキーの検証に失敗しました」というエラーを修正する方法

    3. returnステートメントのないメイン関数が値12を返すのはなぜですか?

    1. CRAN Ubuntu リポジトリからの R のインストール:公開鍵エラーなし

    2. malloc() が mmap() と brk() を同じ意味で呼び出すのはなぜですか?

    3. Linux ネットワーク トラフィックが eth0 のみを通過するのはなぜですか?