使用 shell 脚本进行无密码验证的 rsync

使用 shell 脚本进行无密码验证的 rsync

我仔细按照那里的教程进行操作:

http://www.cyberciti.biz/faq/ssh-password-less-login-with-dsa-publickey-authentication/

然后我在本地机器上编写了以下 script.sh

echo "Sync"

rsync -avz --links /home/jansiatest/.jenkins/workspace/svn_to_demo/trunk/CPS/ [email protected]:/home/tasklite/test

但是当我启动脚本输入./script.sh时,它会不断再次要求我输入服务器上的密码。

我不知道我到底错过了什么

答案1

检查接受密钥的远程主机上的 .ssh 目录的权限。如果其他任何用户都可以读取该权限,则密钥认证将不起作用。.ssh 目录应为 700,授权密钥应为 600。或者,分别为 drwx------ 和 -rw-------。每次设置新主机时,我都会忘记这一点。

答案2

它应该可以工作,您还没有正确部署您的 ssh 密钥。

在 Debian/Ubuntu 上,你可以使用以下命令进行部署:

ssh-copy-id [email protected]

答案3

使用 rsync -e 选项指定您编写的脚本,该脚本使用您控制的选项运行 ssh。使用 ssh 选项-o“批处理模式是”阻止密码提示。现在,如果密钥无法访问,则会出现错误消息,并且 ssh 将退出并显示状态代码。请确保您的脚本将该状态代码传回 rsync。如果您的脚本输出任何内容,请确保它仅输出到 STDERR。如果仍然失败,接下来诊断服务器不接受密钥的原因。

相关内容