127

手動でパスワードを渡す必要なく、自動的に行う必要がありますrsyncsshssh

4

14 に答える 14

117

「sshpass」非対話型 ssh パスワード プロバイダー ユーティリティを使用する

Ubuntu の場合

 sudo apt-get install sshpass

rsync コマンド

 /usr/bin/rsync -ratlz --rsh="/usr/bin/sshpass -p password ssh -o StrictHostKeyChecking=no -l username" src_path  dest_path
于 2013-10-24T15:55:17.023 に答える
52

スクリプト化されたsshログインには、パスフレーズなしのキーファイルを使用する必要があります。これは明らかにセキュリティリスクです。キーファイル自体が適切に保護されていることに注意してください。

パスワードなしのsshアクセスを設定するための手順

于 2010-07-21T13:53:47.027 に答える
35

rsync環境変数RSYNC_PASSWORDを使用するパスワードに設定するか、オプションを使用することにより、コマンドでのパスワード プロンプトを回避でき--password-fileます。

于 2013-01-11T20:54:28.917 に答える
19

私はそれを次のように動作させました:

sshpass -p "password" rsync -ae "ssh -p remote_port_ssh" /local_dir  remote_user@remote_host:/remote_dir
于 2018-10-19T08:30:15.897 に答える
16

公開鍵/秘密鍵を使用できない場合は、expect を使用できます。

#!/usr/bin/expect
spawn rsync SRC DEST
expect "password:"
send "PASS\n"
expect eof
if [catch wait] {
    puts "rsync failed"
    exit 1
}
exit 0

SRC と DEST を通常の rsync ソースと宛先パラメーターに置き換え、PASS をパスワードに置き換える必要があります。このファイルが安全に保存されていることを確認してください。

于 2015-01-31T01:22:37.000 に答える
6

sshキーを使用します。

とを見てssh-keygenくださいssh-copy-id

その後、次のように使用できますrsync

rsync -a --stats --progress --delete /home/path server:path
于 2010-07-21T13:54:34.957 に答える
4

rsync コマンドのパスワードを自動的に入力するのは困難です。問題を回避するための私の簡単な解決策は、バックアップするフォルダーをマウントすることです。次に、ローカルの rsync コマンドを使用して、マウントされたフォルダーをバックアップします。

mount -t cifs //server/source/ /mnt/source-tmp -o username=Username,password=password
rsync -a /mnt/source-tmp /media/destination/
umount /mnt/source-tmp
于 2016-03-29T19:56:32.297 に答える
3

既に実装済みですが、

また、 expect実装を使用することもできます (Perl、Python で代替手段を見つけることができます: pexpect、paramiko など)。

于 2011-01-12T16:36:54.740 に答える
3

私が最初に訪問したとき、公式の解決策(およびその他)は不完全だったので、数年後に戻ってきて、他の人が公開/秘密鍵ペアを使用するつもりでここに巻き込まれた場合に備えて、この代替アプローチを投稿しました。

これをターゲット バックアップ マシンから実行し、ソース バックアップからターゲット バックアップにプルします。

rsync -av --delete -e 'ssh -p 59333 -i /home/user/.ssh/id_rsa' user@10.9.9.3:/home/user/Server/ /home/keith/Server/

これをソース マシンから実行し、ソース マシンからターゲット バックアップに送信します。

rsync -av --delete -e 'ssh -p 59333 -i /home/user/.ssh/id_rsa' /home/user/Server/ user@10.9.9.3:/home/user/Server/

また、ssh に代替ポートを使用していない場合は、以下のより洗練された例を検討してください。

ソースからターゲット バックアップにプルする、ターゲット バックアップ マシンからこれを実行します。

sudo rsync -avi --delete user@10.9.9.3:/var/www/ /media/sdb1/backups/www/

ソースからターゲットへのバックアップを送信するソース マシンからこれを実行します。

sudo rsync -avi --delete /media/sdb1/backups/www/ user@10.9.9.3:/var/www/

それでもパスワードの入力を求めるプロンプトが表示される場合は、ssh 構成をチェックインし/etc/ssh/sshd_config、ソースとターゲットの各ユーザーがそれぞれの公開 ssh キーを持っていることを確認する必要がありますssh-copy-id user@10.9.9.3

(繰り返しますが、これはパスワードなしで ssh 鍵ペアを使用するためのものであり、ファイルを介してパスワードを渡すためのものではありません。)

于 2019-04-10T01:49:07.337 に答える
-1

Andrew Seaford によって投稿されたアイデアに従って、これは sshfs を使用して行われます。

echo "SuperHardToGuessPass:P" | sshfs -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@example.com:/mypath/ /mnt/source-tmp/ -o workaround=rename -o password_stdin
rsync -a /mnt/source-tmp/ /media/destination/
umount /mnt/source-tmp
于 2016-06-04T07:13:09.157 に答える