rsync在bash脚本中使用keygenlogin

所以我为服务器设置了无密码的sshlogin名。 我可以从命令行运行rsync,它运行的很好,并不要求我input密码:

rsync -avz -e ssh myDir user@XXXX:/place/myDir 

但是,当我把它放在一个bash脚本中并执行脚本时,它会停下来询问我一个密码。

 #!/bin/bash rsync -avz -e ssh myDir user@XXXX:/place/myDir 

为什么发生这种情况? 我应该寻找什么来阻止呢?

您可能需要将path添加到您的身份文件中,如下所示:

 rsync -avz -e "ssh -i /home/user/.ssh/id_rsa" myDir user@XXXX:/place/myDir 

你需要find你的ssh代理。 我为此使用钥匙串。

http://www.ibm.com/developerworks/library/l-keyc2/

我喜欢在configuration文件中设置sshconfiguration – 〜/ .ssh / config

看起来像这样

 Host xxx-master HostName XXXX User user IdentityFile ~/.ssh/xxx_id_rsa ControlMaster yes ControlPath ~/.ssh/xxx_ctrl_path Host xxx HostName XXXX User user ControlPath ~/.ssh/xxx_ctrl_path 

然后我ssh xxx-master ,它要求我的密码。 当我继续login到xxx-master,我可以不用密码ssh xxx

这比ssh代理更好吗? 我不知道。 我使用这种方法,因为我还没有想出ssh-agent。