我有一个 Python 脚本。我用它rsync
来在两个系统之间传输数据。运行时,它会要求输入密码进行数据传输。因此,我使用以下命令创建无密码运行。
ssh-keygen -t dsa
ssh-copy-id -i $HOME/.ssh/id_dsa.pub [email protected]
现在一切正常。在运行我的 Python 脚本时,无需输入密码即可传输数据。但问题是我创建了一个 crontab 作业,并在每次重启时运行我的脚本,这意味着每次系统启动时,代码都会自动执行。
在这种情况下,重启后,我的脚本开始执行。但它要求目标系统输入密码进行数据传输(以 为名打开一个小对话框openssh
)。
重新启动系统时不应该询问密码。
注意:如果我手动运行脚本,它就不会询问密码。数据可以完美地传输到目标系统。
如果你知道,请教我。我在等待。
答案1
我认为您的常规用户帐户的 ssh 密钥已经生成(存储在 中/home/user/.ssh/id_dsa
)。
但是,重启 cron 可能是由 root 用户运行的,正在寻找 ssh 密钥,因为/root/.ssh/id_dsa
可能的解决方案:
- 将您的 cron 放入用户 crontab 中
crontab -e
,以便您的用户运行 rsync/ssh 并使用您的用户的 ssh 密钥。 - 为root用户生成ssh密钥,并将该密钥添加到远程服务器
- 在 root crontab 中使用
rsync -e "ssh -i /home/user/.ssh/id_dsa"
,以便 root 使用你的用户 ssh 密钥 - 仔细检查您的 ssh 密钥是否未使用密码保护生成。如果是这种情况,您将需要手动输入密码来解锁 ssh 密钥。