リモートサーバーにscpポートを指定する方法は?

リモートサーバーにscpポートを指定する方法は?

2つのリモートノードがあり、あるノードから別のノードにファイルを送信しようとしています。

scp remote1:~/testSCP [email protected]:~/

~/ssh/configポートがデフォルトで使用されるようにローカルコンピュータに設定しました2222

22ただし、ssh設定では、remote1のデフォルトのsshポートがportの代わりにportに設定されます2222。したがって、SSHを介して外部接続を行うには、デフォルトで22そのポートを使用します。

私は成功せずに次のことを試しました。

scp -P 2222 remote1:~/testSCP [email protected]:~/

また、以下を試しましたが、うまくいきませんでした。

scp remote1:~/testSCP -P 2222 [email protected]:~/

これらの両方について、次のエラーが発生します。

ssh: connect to host 10.0.1.10 port 22: Connection refused
lost connection

portの代わりに10.0.1.10portが使用されるため、これは正しいです。222222

222210.0.1.10(remote2)にファイルを送信しようとしたときにremote1が使用するポートをどのように指定しますかremote1

修正する

試した後

 scp -3 remote1:~/testSCP [email protected]:~/

私は奇妙に行動しています。パスワードが正しい場合でも、次のような結果が表示されます。

[email protected]'s password: [email protected]'s password: 
Permission denied, please try again.
[email protected]'s password: 
Permission denied, please try again.
[email protected]'s password:

まだキーレス認証を有効にしていません。

新しいアップデート

さまざまな方法を試した後、スクリプトのlocalhostからRemote1にSSHを介して接続し、Remote1からRemote2に、次にRemote1からRemote2にSSHを介して接続できました。しかし、これは私の質問には答えません。自分のローカルコンピュータで直接これを実行してから、2つのインスタンス間でファイルを転送する予定です。 2 つのインスタンスの ssh デーモンが ssh 接続にデフォルトポート以外のポートを使用する場合、これはサポートされていないようです。

ベストアンサー1

単純なリモートリモートscp [1]ではこれを行うことはできません。

代わりに、最初のリモートホストにSSHを介して接続し、そこからポートパラメータを使用してscpを実行してください。

ssh -p 2222 ruser1@rhost1 scp -P 2222 /rpath/1 ruser2@rhost2:/rpath/2

scp現在行っていることを正確に実行したい場合は、-n -x -oClearAllForwardings=yesオプションを追加することもできますが、ssh通常は必要ありません。


[1]:最新バージョンはscp代わりにuri仕様(ポートを含む)をサポートしていますが、オプション(「localhost経由」)をhost:path使用している場合にのみサポートされます。-3

だからあなたはおそらく使用することができます

scp -3 -P 2222 ruser1@rhost1:/rpath/1 scp://ruser2@rhost2:2222//rpath/2

/以下はhost[:port]パスの一部ではありません。ホームディレクトリで参照されますscp://user@host/file。)./fileuser

しかし、localhostを介したコピーは遅く、私の経験上エラーは隠されています。たとえば、/foo/bar/bazファイルを生成できなくてもエラーメッセージは印刷されません。

scp -3 localhost:.bashrc localhost:/foo/bar/baz

私はこれについて深く扱っていませんでした。ただ避けました;-)


誰もがこれらすべてを信じていない場合は、一度見てください。ソースコード:

void
toremote(char *targ, int argc, char **argv)
{
   ...
                } else if (host) {      /* standard remote to remote */
                        if (tport != -1 && tport != SSH_DEFAULT_PORT) {
                                /* This would require the remote support URIs */
                                fatal("target port not supported with two "
                                    "remote hosts without the -3 option");
                        }

このtport変数はuri解析でのみ設定され、scp://7.6p1(2017年10月)より前のバージョンにはまったく存在しません。

おすすめ記事