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