web-dev-qa-db-ja.com

3番目のローカルマシンからscpを使用して2つのリモートサーバー間でファイルを転送する方法

1つのremoteサーバーから別のremoteにファイルをコピーしようとしています)mylocalマシンのサーバー。これが私がやろうとしていることです

localA $ scp userB@remoteB:/path/to/file userC@remoteC:/path

問題は、リモートマシンでuserBとuserCの両方に2つのパスワードを渡す必要があることです。

Garron によると、上記は機能するはずですが、許可が拒否されました。

Permission denied (gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive).
lost connection

助言がありますか?

19
Alan

この質問はすでにスーパーユーザーに存在します:

https://superuser.com/questions/686394/scp-between-two-remote-hosts-from-my-third-pc

scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt

そこで説明されているように、-3オプションは、コマンドが発行されたPCを介してトラフィックをルーティングするようにscpに指示します。

Remote1とremote2が同じネットワーク上にある場合、上記のことが当てはまります。

そうでない場合:-ポート転送を使用する必要があります

31
user6459825

ローカル(ローカル->リモート1およびローカル->リモート2)から両方のリモートサーバーにsshできる場合、次を試すことができます。

ssh -A -t user1@remote1 scp srcpath user2@remote2:destpath

これにより、ローカル認証情報を使用してremote1からremote2に直接転送されます。

パスワードの入力を求められない場合は、リモートでauthorized_keysファイルを設定する必要があります。

33
RubenCaro

これは、Linuxターミナルで次のコマンドラインを使用して可能です。

scp -3 user1 @ ip:path/from/directory/user2 @ ip:path/to/directory

次のようなパスワードを要求するプロンプトが表示されます。

ser1 @ ipのパスワード:user2 @ ipのパスワード:

最初のパスワードの後に​​Enterキーを押して両方のパスワードを順番に入力すると、受け入れられるはずですが、それはできません。両方のパスワードを順番に再度指定しても、最初のパスワードの後に​​Enterキーを押さなくても、再度受け入れられません。

最初にuser2を指定してからEnterキーを押してから、user1のパスワードを入力してEnterキーを押す必要があります。これは機能します。

正しく聞こえないことはわかっていますが、これだけが機能します。これはscpのbugです。

4
Rishav Sharan

-o "ForwardAgent yes”トリックを行います:

localA $ scp -o "ForwardAgent yes” userB@remoteB:/path/to/file userC@remoteC:/path

これは-3私は物事を遅くする中間のマシンが欲しくないので。私も@RubenCaroの回答が好きですが、これはより直接的に思えます。

1
wcochran

Authorised_keysファイルにエントリがない場合にのみパスワードが必要です。 2台のサーバー(localA-> remoteBおよびremoteB-> remoteC)にログインし、安全な接続を確立したら、元のコマンドが機能するはずです。

1
DS.