所以我为服务器设置了无密码的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代理。 我为此使用钥匙串。
我喜欢在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。