MacOSX Snow Leopard 中记住 SSH 密码

MacOSX Snow Leopard 中记住 SSH 密码

我在使用 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 -dssh-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不仅会导致其卸载,还会将其标记并记住为已禁用。

相关内容