我在使用 Snow Leopard 时遇到了一个非常奇怪的情况。我有一台 Linux 服务器,配置为仅接受通过 RSA 密钥进行身份验证的 ssh 连接。没有密码。在我的笔记本电脑上,我使用 ssh-keygen 正确部署了 RSA 密钥,并且在执行此操作时添加了密码。然后,我将 Linux 服务器上的 id_rsa.pub 移动到 .ssh/authorized_keys。
到目前为止一切顺利。现在我尝试从我的 Snow Leopard 笔记本电脑登录 Linux 机器。我收到一个弹出窗口,要求我输入密码。这是让我感到惊讶的第一件事,因为我本来以为会是 shell 密码请求,而不是弹出窗口。根据此弹出窗口中的详细信息,请求密码的应用程序是 ssh。此外,还有一个选项“记住钥匙串中的短语”,该选项被禁用。
我输入了密码。弹出窗口消失,终端正确登录到 Linux 机器。现在,如果我注销并再次尝试 ssh,登录将自动进行,无需输入任何密码,这是不是我想要的是。
我检查过的内容:
- 钥匙串中没有保存任何内容。浏览后未发现任何内容。
- 如果我关闭/退出终端并打开一个新终端,仍然不会要求我输入密码,并且 ssh 会在没有任何询问的情况下登录。
- 如果我退出 MacOSX 会话并重新登录,下次尝试时会再次要求输入密码,并再次弹出对话框。然后不再要求输入密码。
密码存储在哪里?到底发生了什么,我如何在每次 ssh 尝试时强制请求密码?
答案1
当 OS X 需要您的私钥时,它会自动为您启动 ssh-agent。然后,您的密钥将通过 ssh-agent 提供(无需再次输入密码),直到您注销OS X或删除密钥(通过ssh-add -d
或ssh-add -D
删除所有密钥)。
这与使用 ssh-agent 的标准 *NIX 系统行为类似,并允许代理身份验证转发(ssh -A
)等有用功能发挥作用,这样您不必将您的私钥放在整个网络上。
如果你想禁用 ssh-agent(针对你 Mac 的所有用户),你可以删除该文件/System/Library/LaunchAgents/org.openbsd.ssh-agent.plist
另一种方法是卸载并禁用 LaunchAgent:
sudo launchctl -w /System/Library/LaunchAgents/org.openbsd.ssh-agent.plist
这-w
不仅会导致其卸载,还会将其标记并记住为已禁用。