Raj*_*dra 87
使用"sshpass"非交互式ssh密码提供程序实用程序
在Ubuntu上
sudo apt-get install sshpass
Run Code Online (Sandbox Code Playgroud)
命令到rsync
/usr/bin/rsync -ratlz --rsh="/usr/bin/sshpass -p password ssh -o StrictHostKeyChecking=no -l username" src_path dest_path
Run Code Online (Sandbox Code Playgroud)
Mad*_*ist 44
对于脚本化的ssh登录,您应该使用没有密码的密钥文件.这显然是一种安全风险,请注意密钥文件本身是否足够安全.
Dex*_*ter 24
通过将环境变量RSYNC_PASSWORD设置为要使用的密码或使用--password-file选项,可以避免rsync命令上的密码提示.
kai*_*jow 13
如果您不能使用公钥/私钥,您可以使用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
Run Code Online (Sandbox Code Playgroud)
您需要将SRC和DEST替换为正常的rsync源和目标参数,并用您的密码替换PASS.只需确保此文件安全存储!
小智 8
我这样算:
sshpass -p "password" rsync -ae "ssh -p remote_port_ssh" /local_dir remote_user@remote_host:/remote_dir
Run Code Online (Sandbox Code Playgroud)
使用ssh密钥:
看看ssh-keygen和ssh-copy-id.
之后,您可以这样使用rsync:
rsync -a --stats --progress --delete /home/path server:path
Run Code Online (Sandbox Code Playgroud)
另一个有趣的可能性:
rsync --partial --progress --rsh =“ ssh -i dsa_private_file” host_name @ host:/ home / me / d。
注意:-i dsa_private_file是您的RSA / DSA私钥
基本上,这种方法与@Mad Scientist描述的方法非常相似,但是您不必将私钥复制到〜/ .ssh。换句话说,它对于临时任务(一次无密码访问)很有用。
以下对我有用:
SSHPASS='myPassword'
/usr/bin/rsync -a -r -p -o -g --progress --modify-window=1 --exclude /folderOne -s -u --rsh="/usr/bin/sshpass -p $SSHPASS ssh -o StrictHostKeyChecking=no -l root" source-path myDomain:dest-path >&2
Run Code Online (Sandbox Code Playgroud)
我必须安装 sshpass
当我第一次访问时,官方解决方案(和其他解决方案)是不完整的,所以几年后我回来发布了这个替代方法,以防其他人在这里打算使用公钥/私钥对:
从目标备份计算机执行此操作,将源备份拉至目标备份
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-copy-id user@10.9.9.3.
(同样,这是使用没有密码的 ssh 密钥对作为替代方法,而不是通过文件传递密码。)
| 归档时间: |
|
| 查看次数: |
238573 次 |
| 最近记录: |