crontab 上的 SCP 在密钥交换后仍然询问密码

SCP on crontab still asking passphrase after key exchange

我需要在 crontab 中执行 "SCP" 命令而不输入密码。 所以我创建了密钥

ssh-keygen -t rsa

然后将id_rsa.pub文件传输到host_dest

之后,将id_rsa.pub的内容复制到~/.ssh/authorized_keys

$ cat id_rsa.pub >>~/.ssh/authorized_keys
$ chmod 700 ~/.ssh/authorized_keys

如果我尝试执行 SCP,仍然需要密码。

我也试过使用

ssh-add ~/.ssh/id_rsa

但在那种情况下我也需要输入密码。 有什么建议吗?!?

密码不是密码。

您的密钥已加密,除非您提供密码,否则它会要求您提供。 Cronjob 无法访问您会话中的 ssh-agent 即 运行。您有两个选择:

  • Remote the passphrase from the key -- 安全性较低,但自动化更简单[​​=14=]

    ssh-keygen -p -P old_passphrase -N "" -f /path/to/your.key
    
  • 使用sshpass并在命令行上提供密钥的密码(以明文形式存储密码也不安全)。