在 bash 脚本中使用 keygen 登录 rsync

在 bash 脚本中使用 keygen 登录 rsync

因此,我为服务器设置了无密码 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 来实现这一点。

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

答案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,所以用了这个方法。

相关内容