パスワードを要求せずに、公開鍵認証を使用せずにrsyncするにはどうすればよいですか?


44

rsyncパスワードを要求されることなく、を実行する必要があります。

私はrsyncマンページで、コマンドライン引数としてパスワードを指定することを許可していないことを見ました。
しかし、変数を使用してパスワードを指定できることに気付きましたRSYNC_PASSWORD

そのため、変数をエクスポートしようとしましたがrsync、パスワードを要求し続けます。

export RSYNC_PASSWORD="abcdef"
rsync root@1.2.3.4:/abc /def

何が間違っていますか?

考えてください:

つまり、RSYNC_PASSWORDアプローチが機能する必要があります!:-)


リモートサーバーでrsyncデーモンを有効にしましたか?
ラフルパティル14年

回答:


13

このパスワード環境変数は、rsyncプロトコルを使用する場合にのみ使用されるようです。

rsync rsync://username@1.2.3.4:/abc /def

これを機能させるには、rsyncをデーモンとしても実行する必要があります(--daemonオプション)inetd.conf

このプロトコルを使用する場合、でabc定義されたターゲットに対応する必要があり/etc/rsyncd.confます。ユーザー名はauth usersこのターゲットの行に存在する必要があり、パスワードファイルはsecrets fileオプションで指定する必要があります。

次の形式のユーザー名とパスワード間のマッピングを含むのは、この秘密ファイルです。

username:password

そして、RSYNC_PASSWORD環境変数を使用して指定できるのはこのパスワードです。


rsyncのサーバを実行するにはquicky方法があるとhttps://s3.amazonaws.com/skaperen/rsend
Skaperen

65

場合はrsyncデーモンがターゲットマシン上で実行されていない、とあなたは(ローカルマシン上のすべての人にパスワードをさらすことを気にしない?コマンドラインでなぜべきではない誰かの使用パスワード)は、使用することができますsshpass

 sshpass -p "password" rsync root@1.2.3.4:/abc /def

コマンドの先頭のスペースに注意してください。bashシェルでは、コマンド(およびパスワード)が履歴に保存されなくなります。RSYNC_PASSWORD絶対に必要でない限り(この回答に対する以前の編集に従って)、変数を使用することはお勧めしません。履歴保存を抑制するか、少なくとも履歴をクリアすることをお勧めします。さらに、tput reset端末の履歴をクリアするために使用できます。


2
なぜあなたが悪いのLinux管理者101だコマンドでパスワードをクリアテキスト、追加を示唆している
エディ・

とても便利です。しばらくの間、このアプローチを探していました。ありがとうございました。
アイザックグレッグソン

6
これはパスワードをクリアテキストとして追加するのは良くありませんが、現時点ではこれが合理的に簡単な唯一の方法です。
ウェストンガンガー

15
いつでも次のようなことができますsshpass -p $(cat passFile) ..。bash履歴でクリアパスを非表示にし、passFileでchmod 400を使用してセキュリティを確保します
Kresimir Pendic

3
これは古いことは知っていますが、新しい読者のためにパスワード引用してください。パスワードには特殊文字とスペースを含めることができます。-p "$RSYNC_PASSWORD"
水田ランダウ

16

標準のssh IDを使用して、パスワードなしでログインできます。などがある~/.ssh/id_rsa場合、これはデフォルトで処理されますが、許可されたキーペアの秘密キーへの独自のパスをハードコードすることもできます。

これにより、パスワードを公開せずにバッチ処理/スクリプティングが可能になり、秘密キーが危険にさらされた場合、公開キーをターゲットサーバーから削除できます。

rsync -e"ssh -i /path/to/privateKey" -avR $sourcedir ${ruser}@${rhost}:~/${rdir}/

-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/nullリモートホストキーの検証を強制しないように引数を追加することもできます。!注意-それは中間者攻撃を開き、一般的な悪い習慣です!


1
これは、Windows 10用の新しいBashシェルを使用している場合に特に便利です。なぜrsyncがパスワードなしで機能しなかったのか疑問に思いました。~/.sshシェル内のフォルダー(rsyncが存在する場所)を使用していることに気付きました。-eを使用して内部のキーをポイントすると、/mnt/c/Users/MyUsername/.ssh期待どおりに機能しました。(ありがとう。:D)
トビーDeshane

12

スクリプト作成に非常に便利なのは、--password-fileコマンドラインオプションを使用することです。

  • rsync_passという空のファイルを作成します
  • このファイルにパスワードを書き込みます(これ以上)
  • chmod 600 rsync_pass
  • rsync $args --password-file=rsync_pass user@rsynchost::/share localdirectory

これはスクリプティングに使用でき、パスワードをシステム変数にエクスポートするよりも安全です。


4
読者への注意:これには、サーバーで実行されているrsyncデーモンも必要です。パスワードなしのrsyncにはsshキーで十分であることを本当に望んでいました。
シュリダールSarnobat

私見これは、sshを使いたくない場合に行う唯一の正しい方法です。
maxf130

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