3台目のコンピュータから開始して、あるサーバーから別のサーバーにファイルを転送する

3台目のコンピュータから開始して、あるサーバーから別のサーバーにファイルを転送する

次の構成でサイト間転送を行おうとしています。古いサーバー (server-A)、新しいサーバー (server-B)、およびワークステーション (wks) があり、これらのサーバーで転送を開始したいと考えています。

wks と server-A/B の間で SSH キー交換が行われました。

サーバー A とサーバー B の間でキーは交換されません。

ワークステーションから次のコマンドを試しました

scp -r root@server-A:/path/to/source/ root@server-B:/destination/path

しかし、うまくいきません。私の理解では、サーバー A はサーバー B に接続しようとしますが、キー交換が行われないため失敗します。

この特定の構成でファイル転送を機能させる方法をご存知ですか?

答え1

サーバーAとサーバーB間の直接接続を使用してファイルを転送するのが望ましい方法です。これがscpやろうとしていることです。man 1 scp:

-3
2 つのリモート ホスト間のコピーは、ローカル ホストを介して転送されます。このオプションを指定しないと、データは 2 つのリモート ホスト間で直接コピーされます。このオプションを指定すると、進行状況メーターが無効になることに注意してください。

「サーバーAがサーバーBに接続しようとする」オプションがないのは正しいです-3。私のテストでは、サーバーBがパスワードベースの認証を許可している場合でも、ttyとのやり取り(パスワードを尋ねられている間)が問題になる可能性が高いことがわかりました。このような場合このコメント便利そうです:

sshサーバー A に、scpサーバー A でを起動します (1 つのコマンド)。ファイルを 2 回コピーすることを回避します。

明示的にsshサーバー A に入り、そこでscp呼び出すと、サーバー B のパスワードを要求しながら tty と対話する際に問題は発生しないはずです。 あるいは、sshサーバー B に入り、scpそこで呼び出すこともできます。

それが不可能な場合 (キーが必要、パスワードが許可されていない場合)、scp -3ワークステーションで使用してください。明らかに、これはローカル マシンを一種のプロキシとして使用するため、データはネットワーク接続を上下に流れます。

ただし、すべてのscp実装がサポートするわけではありません-3

関連情報