因此,我为服务器设置了无密码 ssh 登录。我可以从命令行运行 rsync,它运行良好,并且不会要求我输入密码:
rsync -avz -e ssh myDir [email protected]:/place/myDir
但是,当我将其放入 bash 脚本并执行该脚本时,它会停止并要求我输入密码。
#!/bin/bash
rsync -avz -e ssh myDir [email protected]:/place/myDir
为什么会发生这种情况?我应该采取什么措施来阻止这种情况?
答案1
您可能需要像这样添加到您的身份文件的路径:
rsync -avz -e "ssh -i /home/user/.ssh/id_rsa" myDir [email protected]:/place/myDir
答案2
您需要获取 ssh 代理。我使用 keychain 来实现这一点。
答案3
我喜欢在配置文件 ~/.ssh/config 中设置 ssh 配置
它看起来像这样
Host xxx-master
HostName X.X.X.X
User user
IdentityFile ~/.ssh/xxx_id_rsa
ControlMaster yes
ControlPath ~/.ssh/xxx_ctrl_path
Host xxx
HostName X.X.X.X
User user
ControlPath ~/.ssh/xxx_ctrl_path
然后ssh xxx-master
它要求我输入密码。当我继续登录 xxx-master 时,我不需要ssh xxx
密码。
这个比 ssh agent 好吗?不知道,因为还没搞清楚 ssh-agent,所以用了这个方法。