SSH 代理在重启机器时丢失身份

Nik*_*iks 14 ssh terminal sshd ssh-agent macos

id_rsa在其默认位置创建具有名称的密钥后。我正在使用命令向 SSH 代理添加身份ssh-add ~/.ssh/id_rsa,添加成功。

我可以在不输入密钥密码的情况下进行 SSH,因为它已经与 SSH 代理一起使用了。

但是,当我重新启动机器或服务器,然后使用命令检查身份时,ssh-add -L我收到类似The agent has no identities.

这是否意味着当我们重新启动机器时,Agent 丢失了身份?这是正常行为还是我在这里缺少的东西?

请指导我,我对SSH不太熟悉。

use*_*686 14

这是正常的。密钥代理的目的只是将解密的密钥保存在内存中,但它永远不会将它们写入磁盘。(这会破坏目的——为什么不直接取消保护主密钥呢?)

因此必须在每次登录时解锁密钥,并且您需要自动执行此操作 - 在 Linux 上使用pam_ssh是一种选择;它会自动使用您的操作系统密码来解锁代理。另一个类似的模块是pam_envoy,它稍微更可靠 afaik(但需要 systemd)。

两个模块都将启动代理本身并自动加载密钥。


小智 6

在 OS X 上,如果您决定将私钥存储在其中,则 ssh-add 有一个特殊标志可以连接到钥匙串。

赶紧跑ssh-add -K ~/.ssh/id_rsa

我相信这更全面地回答了你的问题。这个 OS X 特定标志很难找到相关文档,但至少从 OS X Leopard 开始它就一直在工作。

  • 这是正确的答案,后面跟着一个“ssh-add -A”,它将添加钥匙串中的所有密钥。此外,还创建一个“~/.ssh/config”并添加“UseKeychain yes”,以便 macOS 将始终保留您的密钥,如下所述:https://unix.stackexchange.com/questions/140075/ssh-add-is - 重新启动之间不持久 (4认同)