当我通过 SSH 连接到 OS X 时,我没有钥匙串。当我使用终端时,我会

whi*_*537 13 ssh keychain macos

脚步

  1. 在我的 Windows 桌面上打开 PuTTY。
  2. 通过 SSH 连接到我的 MacBook Pro。
  3. cd 到 github 克隆
  4. $ git push

预期的

Everything up-to-date
Run Code Online (Sandbox Code Playgroud)

实际的

Enter passphrase for key '/Users/whit537/.ssh/github':
Run Code Online (Sandbox Code Playgroud)

笔记

  • github 密钥在 Keychain Access 中列出。
  • 我可以在 Keychain Access 中显示它的密码。
  • 我可以在 PuTTY 的提示下成功使用此密码。
  • 我在 MacBook 的终端窗口中得到了预期的结果。
  • uname -a:Darwin chad.whitacre 10.7.0 Darwin Kernel Version 10.7.0:Sat Jan 29 15:17:16 PST 2011;根:xnu-1504.9.37~1/RELEASE_I386 i386

更新

2011-04-12:我security通过相关边栏中的一个问题发现了该工具(发布时没有在可能的答案列表中注意到它)。我尝试跑步,security unlock-keychain但得到了相同的结果。似乎应该有某种方法可以做到这一点。实际上,有两个密钥有问题,它们是长密码,而不是短密码,我白天经常需要它们。所以我有一些动力去追查到底。

2011-04-13:这听起来很有希望。我/tmp/launch-*****/Listeners在 MacBook 上看到了该文件。下次我使用 PC 时,我将尝试SSH_AUTH_SOCK在 PuTTY 会话中进行设置。如果这行得通,我会看到有关.profile自动发现当前启动会话的钩子的信息。

Bes*_*esi 20

您应该能够像这样在终端中解锁您的钥匙串:

security unlock-keychain -p <YourPassword> ~/Library/Keychains/login.keychain
Run Code Online (Sandbox Code Playgroud)

如果您不想被提示输入密码,您可以将密码存储在一个文件中,然后像这样执行命令:

security unlock-keychain -p `cat ~/.file_with_your_password` ~/Library/Keychains/login.keychain
Run Code Online (Sandbox Code Playgroud)

请注意,将您的钥匙串密码存储在文件中具有一些与安全相关的缺点,您可以想象,因此您必须自己决定这是否适合您。

我希望这有帮助

  • “一些”确实,不会将密码以明文形式访问您的钥匙串放在文件中,这会使整个事情变得毫无意义......?那么您也可以拥有明文形式的钥匙串中受保护的内容吗? (3认同)

Maj*_*nko 4

您的钥匙串与 OS X 的图形登录相关联。当您本地登录到计算机时,它会打开您的钥匙串。终端(其中运行 bash)可以识别您的钥匙串。

当您通过 PuTTY 远程登录时,您的钥匙串不会打开,PuTTY 和 bash 也不知道这一点 - 即使您也在本地登录。他们之间的联系不存在。

很抱歉,当您通过 PuTTY 登录时,您不得不输入密码。

除非了解 OS X 钥匙串系统内部结构的人可以想出某种方法来手动将该链接放置在 PuTTY 连接的会话中,但在我看来,这可能比每次输入密码都要费力。尽管。