我已经关注以下指南在本地计算机和远程服务器之间设置使用 SSH 的 Rsync:
我以 root 身份执行了下列操作:
rsync -avz -e ssh /home/user/dir [email protected]::Backup/dir
-> 提示输入密码ssh-keygen
-> 密钥已生成ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.200.10
-> 确认密钥已被复制ssh 192.168.200.10
-> 无需输入密码即可访问远程服务器rsync -avz -e ssh /home/user/dir [email protected]::Backup/dir
-> 提示输入密码
我可以通过 SSH 进入远程服务器而不需要输入密码,但使用 rsync 时却需要输入密码,这难道不奇怪吗?
我可以.ssh/authorized_keys
在远程服务器上看到。
我哪里做错了?
答案1
您正在混合两种独立的连接模式:使用远程 shell(-e ssh
)和不使用远程 shell,通过rsync daemon
(由双冒号标识)。
手册状态:
连接到 RSYNC 服务器
也可以使用没有远程 shell 的 rsync 作为传输。在这种情况下,您将连接到在 TCP 端口 873 上运行的远程 rsync 服务器。
...... 您可以使用双冒号 :: 而不是单冒号将主机名与路径分隔开,或者使用 rsync:// URL。
.......远程服务器上的某些路径可能需要身份验证。如果是这样,那么当您连接时,您将收到密码提示。您可以通过将环境变量 RSYNC_PASSWORD 设置为要使用的密码或使用 --password-file 选项来避免密码提示。这在编写 rsync 脚本时可能很有用。
对您来说,获得无密码身份验证的最简单方法可能是修改上述命令,如下所示:
rsync -avz -e ssh /home/user/dir [email protected]:/absolute/path/to/Backup/dir
答案2
您的本地帐户的用户名可能不是root
,这是您在 Rsync 中使用的用户名。
ssh remotehost
…实际上等同于:
ssh localUserName@remotehost
抱歉,我没有注意到您已经说过您以 root 身份运行。
我也没有注意到您::
在远程主机名后使用了带有两个冒号 ( ) 的模块语法。我不认为您所遵循的指南介绍了以这种方式连接到 Rsync,并且如果您使用单冒号语法就应该没问题,例如:
rsync -avz -e ssh /home/user/dir [email protected]:/some/path/backups/dir
答案3
我也遇到过这个问题 - 希望这能有所帮助。对我来说,问题在于备用端口 ssh 所需的语法。以下是两个有效示例:
从目标备份机器执行此操作,从源备份拉到目标备份:
rsync -av --delete -e 'ssh -p 59333 -i /home/user/.ssh/id_rsa' [email protected]:/home/user/Server/ /home/user/Server/
从源机器执行此操作,从源机器向目标机器发送备份:
rsync -av --delete -e 'ssh -p 59333 -i /home/user/.ssh/id_rsa' /home/user/Server/ [email protected]:/home/user/Server/
此解决方案假设您已经使用 交换了您的公钥和/或目标交换了您的公钥ssh-copy-id -p 59333
。如果您使用端口 22,则不需要这种奇怪的语法,在这种情况下,您可以使用标志i
,它将从 中的默认位置获取公钥~/.ssh/id_rsa.pub
。这是一个没有备用端口的示例,也可以正常工作:
从目标备份机器执行此操作,从源备份拉到目标备份:
sudo rsync -avi --delete [email protected]:/var/www/ /media/sdb1/backups/www/
从源机器执行此操作,从源机器向目标机器发送备份:
sudo rsync -avi --delete /media/sdb1/backups/www/ [email protected]:/var/www/
如果仍然提示您输入密码,则需要检查 ssh 配置/etc/ssh/sshd_config
并验证源和目标中的用户是否各自拥有对方的公共 ssh 密钥。我留下了这么多细节,因为上面另外两个人留下的语法对我来说仍然不起作用。
答案4
我总是用我的私钥登录并连接到我的授权密钥所在的服务器
像这样
/usr/bin/rsync -avz --delete -e "ssh -i /root/.ssh/marcel_id_rsa" root@localhost:/opt/ /backup/1-Zondag
它从 cron 开始工作。nu passwd 询问
如果由于远程服务器拒绝而无法正常工作...这肯定有效
sshpass -p "我的密码" /usr/bin/rsync -avz --delete -e ssh root@localhost:/opt/ /backup/1-Zondag