2つの異なるポートを持つSCP


15

scpコマンドを使用して、ローカルPCから2つのリモートサーバー間でファイルをコピーするにはどうすればよいですか?

リモートサーバー1:IP = 67.12.21.133&port = 6774

リモートサーバー2:IP = 67.129.242.40&port = 6774

scp -rp -P 6774 denny@67.12.21.133:/home/denny/testapp1.txt denny@67.129.242.40:

67.12.21.133のパスワードを指定するとエラーが発生します。

ssh:ホスト67.129.242.40ポート22に接続:接続が拒否されました

接続が切れました


私もそれをテストしましたが、最初のホストでのみ機能します。2番目はポート22にロックされています。
gajdipajti12年

回答:


19

~/.ssh/configを使用して、ホストに使用するポートを指定できます(他の多くの便利な設定を行うには、manページを確認してくださいman ssh_config)。

# ~/.ssh/config

Host 67.12.21.133
  Port 6774

Host 67.129.242.40
  Port 6774

これを行うとき-3、ローカルマシンを介してファイルをコピーするscp のオプションを使用する必要があります。それ以外の場合、scpは最初のホストでsshを介してscpコマンドを発行するため、実際に実行されます

 ssh -p 6774 denny@67.12.21.133 scp -rp /home/denny/testapp1.txt denny@67.129.242.40:

そして、最初のリモートホスト(67.12.21.133)の〜/ .ssh / configがローカルホストの代わりに使用されます。

~/.ssh/config正しくセットアップしたら、これは機能するはずです:

scp -rp3 denny@67.12.21.133:/home/denny/testapp1.txt denny@67.129.242.40:

もちろん、〜/ .ssh / configファイルの内容を最初のリモートホストにコピーしてから、-3オプションなしでscpを使用することもできます。これにより、おそらく転送が高速化されます。

または、scpが使用するトリックを使用して、このようなコマンドラインを使用できます。

ssh -p 6774 denny@67.12.21.133 scp -rp -P 6774 /home/denny/testapp1.txt denny@67.129.242.40:

(sshとscpのポートパラメータの異なるケースに注意してください:ssh -p 6774vs. scp -P 6774

PS:この情報をバグとして入力したOpenSSH bugzillaから取得しました:https : //bugzilla.mindrot.org/show_bug.cgi?id=2020


「-3」は有効なオプションではないようです-「scp:illegal option-3」と表示されます。
リッチセドマン

8

簡単な解決策は見つかりませんでしたが、次の方法でsshfsを使用できます。

mkdir /tmp/h1
mkdir /tmp/h2

sshfs -p 6774 user1@host1:/public /tmp/h1
sshfs -p 2211 user2@host2:/data/src /tmp/h2

cp /tmp/h1/files.* /tmp/h2

fusermount -u /tmp/h1
fusermount -u /tmp/h2

別の方法はsshを使用することです(実際にテストは成功していません):

ssh user1@host1 "cat /public/file.bin" | ssh user2@host2 "cat >/data/file.bin"

現在、2つのパスワードを入力する正しい方法が見つかりません。2つのパスワードを何度か要求しますが、誰も受け入れません。動作するホスト間でsshキーを交換する場合があります。あなたはパスワードを必要としないからです。

これが役立つことを願っていますか?トーマス


6

Linux Academyブログのこのページによると-P 6774、2番目のリモートパスの直前でもオプションを使用するだけです。

scp -rp -P 6774 denny@67.12.21.133:/home/denny/testapp1.txt -P 6774 denny@67.129.242.40:

-Pフラグの各使用は、コマンド全体ではなく、コマンドラインの次の場所にのみ適用されます。-P前のパス(またはコマンド名[ scp])の間にない場所は、デフォルトで標準ポート(22)になります。


私にはうまくいきません。これが最善の解決策だと思われるため、残念です。リンクが壊れています。
-david.perez

1
リンクを更新しました(最初にログインするのを忘れていましたが...)。Linux Academyは、サイトの再構築を決定しました。お役に立てば幸いです!
ダンHunsaker

これだけが機能した場合。しかし、私は得る-P: No such file or directory
トム

@Tom-これを実行しているシステムは何ですか?scpここで参照されている実装とは異なる実装を使用している場合があります。
ダンハンセーカー

これはUbuntu 17.04です。
トム

-2

あるサーバーから別のサーバーにデータを転送する必要がある場合は、SCPコマンドを使用します。そうするには

キーボードのCtrl+ Alt+ Tを押すだけで、ターミナルが開きます。開いたら、以下のコマンドを実行します。

scp -pr root@192.168.1.2:/path/to/files /destination/path

注:ポート番号を指定する場合は、パラメーター-Pを使用できます。


2
あなたは質問を読んでいません。彼はポートに問題があります。最初のポートを設定できますが、2番目のポートには-Pパラメーターを付けます
-gajdipajti

@gajdipajti回答にポートを指定しなかったため、メモとして追加しました。ユーザーは、同じポートを使用しているとも述べました。Q. 2行目と3行目を見てください:)
ミッチ

2
しかし、この方法では機能しません。最初の設定は-Pで、2番目の設定は22のままです。試してみてください。現在テストを行っていますが、まだ有効なソリューションはありません。
-gajdipajti

非標準のポートを使用している場合にのみ、-Pオプションを使用します。
ミッチ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.