OSX ssh-agent:没有密码粘贴,并且PKCS#8有问题吗?


37

我在计算机上使用ssh,并设置了一个很长的非人类友好的密码,该密码保存在我的密码管理器中。每次让我发疯的是我无法粘贴到下图所示的窗口中。我知道该Remember password in my keychain选项并使用它。有时我不得不输入一个新的。为什么我不能粘贴到密码字段?

插入加密磁盘时弹出的对话框也是如此。

ssh代理窗口

一些更新:

  1. 我发现了如何避开对话框:只需使用ssh-add -K ~/.ssh/id_rsa,然后将密码短语粘贴到终端中即可。
  2. 正如mattmcmanus所提到的,我的密钥已被加密,pkcs8该密钥已在优胜美地的ssh-agent上使用。这与上面的问题无关,但是我确实同时发生了(请阅读此处)。
  3. 使用ssh-add 无法解决此问题。

您应该接受以下良好答案之一。您还应该避免在一个帖子中问多个问题。
Alain O'Dea

1
@ AlainO'Dea首先,是的,我应该这样做,这是一个老问题,我忘记了。不过,第二件事是:在询问时,尚不清楚是否会出现第二个问题(PKCS损坏),请参阅编辑历史记录。
乔尼

Answers:


22
  1. 可以通过在控制台/终端中添加密钥来绕开ssh-agent对话框ssh-add ~/.ssh/id_rsa。然后,您可以将密码粘贴到终端中。另外,根据Oliver Lacans的评论,将-K选项添加到ssh-add会将其保存到钥匙串中。
  2. 正如mattmcmanus所说,在OSX Mavericks ssh-agent上使用PKCS进行的id_rsa加密似乎已被破坏。快速的解决方法是解密密钥文件,然后使用标准的ssh程序(密钥派生方法:MD5 ...)再次对其进行加密:

mv id_rsa id_rsa.pkcs
openssl rsa -in id_rsa.pkcs -out id_rsa
# enter passphrase to decrypt
chmod 0600 id_rsa
ssh-keygen -f id_rsa -p
# enter passphrase to encrypt again

3
尽管joni的回答非常好,但我还是建议ssh-add -K ~/.ssh/id_rsa您推荐“ 将密码短语存储在您的钥匙串中” ssh-add --help。这将避免您ssh-add每次打开新的Shell选项卡或重新启动计算机时都必须重新运行。
奥利维尔·拉坎

2

它是PKCS#8钥匙,您在特立独行吗?如果是这样,那似乎完全被破坏了。不确定是否有解决方案。


1
为什么会这样呢?到目前为止,问题仅在于对话框上的密码字段不接受粘贴。这在10.8上已经存在,但是由于更新到10.9,我必须再次输入密码。
joni

好,您似乎是对的...看我自己的答案。
乔尼,

2

在Mac OS X El Capitan上,ssh-add命令可以使用-K选项执行此操作:

$ ssh-add -K ~/.ssh/id_rsa
Enter passphrase for /Users/your.username/.ssh/id_rsa:

您可以使用⌘-V将密码粘贴到此提示中。

一个会话如下所示:

$ ssh-add -K ~/.ssh/id_rsa
Enter passphrase for /Users/your.username/.ssh/id_rsa:
Passphrase stored in keychain: /Users/your.username/.ssh/id_rsa
Identity added: /Users/your.username/.ssh/id_rsa (/Users/your.username/.ssh/id_rsa)

man ssh-add带来的SSH-ADD(1)的相关摘录:

-K 添加身份时,每个密码短语也将存储在您的钥匙串中。使用-d删除身份时,每个密码短语都会从您的钥匙串中删除。

INFOSEC注意:您的密码不会在外壳中显示,但是会通过剪贴板显示给所有正在运行的应用程序。自动键入解决方案将更安全。


1

您可以在AppleScript编辑器中运行如下脚本:

tell application "System Events" to tell process "SecurityAgent"
    set value of text field 2 of scroll area 1 of group 1 of window 1 to "pa55word"
    click button 2 of group 2 of window 1
end tell

1
谢谢,这将为“加密磁盘”对话框提供帮助。但是,为什么苹果禁用此字段进行粘贴???
乔尼,

方便,但是,是的,认为这不能解决PKCS#8问题,即使您输入正确的密码,它也提示密码短语错误。
Bob Aman

没有道理。现在,您的最高机密密码对所有人开放。这就是TS使用密码管理器使密码集中且受到高度保护的原因。
whaefelinger 2015年

1
在El Capitan上不起作用。首先它要求脚本编辑器来获得辅助控制System Events got an error: Script Editor is not allowed assistive access. 一旦被允许在系统偏好| 我得到的安全和隐私System Events got an error: Can’t get window 1 of process "SecurityAgent". Invalid index.
Alain O'Dea

1

我有同样的问题。找到这个问题后,我继续寻找并在其他地方找到了答案。这是一个比较老的问题,但是没有公认的答案,而且在搜索列表中仍然很高。(不确定关于stackexchange的礼节)。

RE无法复制/粘贴:显然是设计使然。目的是防止从剪贴板对字段的所有访问,以防止恶意程序抓取密码框。我认为应该允许粘贴(而不是剪切),但是也许有一些技术上的原因。

对于ssh-agent东西,(至少是)优胜美地(Yosemite)而言,中的-K选项可以满足ssh-add -K ~/.ssh/blah您的要求-键入一次密码,将其存储在钥匙串中,并且ssh-agent将为您透明地解锁。为了更安全,我将ssh密码设置在单独的钥匙串中,该钥匙串会定期锁定自己。


您是否有机会共享指向所找到答案的链接?
约翰·卡尼

对于那个很抱歉!对于ssh-agent的东西,我偶然发现了developer.apple.com/library/mac/documentation/Darwin/Reference/…–
PerilousApricot

0

使用brew openssl和openssh解决了该问题。

brew update
brew install openssl
brew link openssl --force
brew install openssh

# confirm correct bins are being used
# both should be located in /usr/local/bin
which openssl
which openssh

# add key back to keychain
ssh-add ~/.ssh/id_rsa

我不确定强制链接openssl是否会破坏Mavricks上的任何内容。到目前为止,我还没有发现任何问题。


1
没有(较长的a)brew公式openssh
亚当·里特(Adam Liter)2014年

brew tap homebrew/dupes但是仍然有。就是说,这些步骤似乎并没有为我解决这个问题。
Bob Aman

@ simple10这个答案几乎没有价值。您至少应提供可解决该问题的openssl / openssh版本。另外,请详细说明这样做的原因。
whaefelinger 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.