rsyncに-e sshが必要ですか?


22

サーバーからコピーするときは、常に次のコマンドを使用していました rsync --progress -avze ssh user@host:/path/to/files ./here。しかし、心の友人は私に単純にできることを示しましたrsync --progress -avz user@host:/path/to/files ./here。問題は、-e sshなぜ必要なのかとにかく、なぜそこにあるのかということです。

回答:


20

ユーザーとホスト以外のsshコマンドに追加オプションが必要な場合は、-eフラグが必要です。おそらく、接続しているサーバーは、ポート2222でリッスンしているsshを持っています。

rsync -e 'ssh -p 2222' /source usr@host:/dest

これを回避する代わりに、使用できるファイルが2つあります。 /etc/ssh/ssh_configまたは~/.ssh/config

構成ファイルは、と同じ形式を使用しますssh_config。ユーザーごとに設定することができます!


9

また-e、デフォルト以外の秘密鍵の場所を使用する場合、つまり、を介して秘密鍵を指定する場合にも必要になります-e 'ssh -i /path/to/private/key/file.pem'。さらに、sshdのデフォルト以外のリッスンポートもあります。基本的に、使用-eするだけでssh user@hostは機能しない場合に使用します。


-iあなたの例のsshまたはrsyncのオプションはありますか?sshの場合、コマンドを単一引用符で囲まなくても機能しますか?
イズカタ

ああ、そうです、引用符が必要です。今すぐ回答を編集します。
cjc

8

sshを使用するために-e sshは必要ありません。実際、ターゲットをuser @ host:/ path / to / filesとして指定すると、デフォルトでsshが使用されます。これは、a)互換性の理由とb)rsyncdホストとsshホストの組み合わせが存在する可能性のある例外的なケースに残されています。


2
たとえば、RSYNC_RSHのデフォルトは「rsh」であるため、RHEL 3では必須です。
カイルスミス

5

--with-rshコンパイル時にconfigureオプションに指定されたものに依存します。このオプションが指定されなかった場合、デフォルトは現在sshです。以前はrshでしたが、rshであっても、多くのボックスでsshがデフォルトのrsh実装である可能性があるため、必要ではないかもしれません。たとえば、すべてのマシンで、readlink -f $(which rsh)rshは実際には/ usr / sbin / sshを指す単なるシンボリックリンクであることを示しています

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