我需要通过SSH做rsync,并希望自动执行,而无需手动为ssh传递密码。如何通过rsync SSH密码命令
回答
对于脚本化的ssh登录,您应该使用不带密码的密钥文件。这显然是一种安全风险,请注意密钥文件本身已得到充分保护。
使用SSH密钥:
看看SSH-凯基和的ssh-copy-id命令。
在此之后,你可以使用rsync的是这样的:
rsync -a --stats --progress --delete /home/path server:path
如果我用ssh写密钥,我写:ssh u @ serv -i ./rsa 但是如何在rsync中做到这一点? – liysd 2010-07-21 14:15:57
如果将密钥放入.ssh目录并为其指定一个标准名称(通常为id_rsa/id_rsa.pub),它将由rsync自动提取。 – 2010-07-21 14:31:14
虽然你已经通过,现在实现了,
,你也可以使用任何expect执行(你会发现在Perl的替代品,Python:pexpect,paramiko等)。
通过将环境变量RSYNC_PASSWORD设置为要使用的密码或使用--password-file选项,可以避免rsync命令的密码提示。
只适用于目标服务器运行rsync守护进程 – 2013-03-02 16:58:15
即使这个答案没有帮助,除非使用rsync守护进程,Google在这里登陆并且它正是我所需要的。对我而言,我需要直接rsync到rsyncd,不需要ssh。我只是使用密码文件选项,并完美地为脚本工作。 – gregthegeek 2014-07-22 19:40:08
使用 “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
我知道这不是最好的做法,但我有一个残缺不全的SSHD NAS,不会执行基于密钥的身份验证。这个答案是我的自动备份难题中缺少的一部分。所以+1为最后的解决方案答案 – 2013-11-17 23:02:43
不知道sshpass,在棘手的情况下派上用场。 – haridsv 2014-11-14 11:14:46
如果您不能使用密钥文件,但不想在命令中包含密码,则可以将其写入临时文件并将其包含在内:'sshpass -p \'cat .password \'ssh [.. ]'。然后用'chmod 400 .password'保护你的'.password'文件,以确保只有你的用户可以读取它。 – lutuh 2015-08-06 14:20:50
另一个有趣的可能性:1。 产生RSA,DSA或密钥对(如前所述) 2.将公钥发送给主机(如前所述) 3.运行:
rsync --partial --progress --rsh="ssh -i dsa_private_file" [email protected]:/home/me/d .
注:-i dsa_private_file这是您的RSA/DSA私钥
基本上,这种做法是非常类似于@Mad科学家所描述的,但是你做不必将您的私钥复制到〜/ .ssh。换句话说,它是有用的即席任务(一次性密码访问)
如果您不能使用公钥/私钥,您可以使用期望:
#!/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。只要确保这个文件安全存储!
这些命令不能在我的'红帽企业Linux服务器版本5.11(Tikanga)' – 2015-06-18 09:00:16
自动输入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
继作者:Andrew希福德的想法,这是使用sshfs的完成:
echo "SuperHardToGuessPass:P" | sshfs -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected]:/mypath/ /mnt/source-tmp/ -o workaround=rename -o password_stdin
rsync -a /mnt/source-tmp/ /media/destination/
umount /mnt/source-tmp
我用一个VBScript文件在Windows平台上这样做,服务器我非常好。
set shell = CreateObject("WScript.Shell")
shell.run"rsync -a [email protected]:/Users/Name/Projects/test ."
WScript.Sleep 100
shell.SendKeys"Your_Password"
shell.SendKeys "{ENTER}"
我
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
以下作品我必须安装sshpass
上提供-a已经暗示-rlptgoD,并且通常,在这里缩小命令行会更有帮助。 – Christian 2017-12-12 22:21:55
- 1. 如何通过sudo运行命令并通过ssh .net输入密码c#
- 2. 如何使用ssh命令在命令中发送密码
- 3. 如何通过PHP执行SSH命令
- 4. 如何通过robotframework执行ssh命令
- 5. 如何使用Jsch通过SSH运行需要密码的命令
- 6. 如何通过系统停止rsync进程(“ssh host rsync ...”)?
- 7. 如何在linux ssh命令中传递* encrypted *密码?有没有办法通过加密密码?
- 8. rsync命令失败时,通过系统()
- 9. 如何通过ssh/su - 通过本身传递密码?
- 10. 运行sudo命令通过ssh
- 11. 通过ssh运行多个命令
- 12. 使用JSch通过SSH运行命令
- 13. 发送命令通过ssh与参数
- 14. 通过ssh运行Ansible单一命令
- 15. 通过Python传递SSH密码输入
- 16. 脚本github命令没有SSH密钥密码
- 17. Java通过java代码执行ssh命令
- 18. 如何通过ssh通过ssh
- 19. 如何通过SSH正确运行“top”命令?
- 20. 使用用户名和密码的SSH git命令
- 21. 通过子进程通过SSH发出命令时正确获取返回码
- 22. 通过代码desc命令
- 23. 通过SSH运行SSH屏幕上的命令phpseclib
- 24. 通过SSH进行SSH(或如何通过SSH“通过SSH进行通信”)
- 25. 无法通过ssh通过名称来终止远程命令
- 26. Curl命令通过SSH工作,但不通过PHP
- 27. 如何在Windows上获取rsync命令?
- 28. 如何通过命令行
- 29. 如何通过命令
- 30. 发送命令密码使用期望在SSH连接脚本
有没有可能性把密码用命令的文本? – liysd 2010-07-21 13:55:22
不容易,在ssh中没有选项它 – 2010-07-21 13:59:03
应该指出,这并不总是可以做到的(例如许多android ssh服务器的实现是非常有限的)。 – Ponkadoodle 2015-08-28 04:05:17