从 PC1,我通过 SSH 进入服务器1我有一个 bash 脚本,它将 SSH 和身份验证服务器2使用受密码保护的 SSH 密钥。
当我手动执行脚本时,一切都正常,使用 ssh-agent 将受密码保护的密钥加载到内存中并将其转发到服务器2用于授权。
但是在 SERVER1 上使用 crontab 通常会失败;如何使用受密码保护的 SSH 密钥使以下命令正常工作?
SERVER1$ ssh -i ~/.ssh/somekey.pem SERVER2
答案1
不能。使用密码保护密钥的理念是每次读取密钥时都需要提供密码。当自动运行命令时,没有任何东西可以提供必要的密码,因此ssh
无法访问私钥。
可以规避这种情况,使用某种自动化方式,从代码中提供密码(expect
例如使用),但这样一来,您必须将密码保存在某处才能将其提供给ssh
。因此,您使用密码保护密钥,但立即提供密码,那么有什么意义呢?
我认为对于自动化任务来说最好有一个无密码密钥。