无法在OS X Mavericks中解锁受密码保护的SSH密钥


18

我刚刚升级到OSX 10.9,并且尝试通过公用密钥身份验证建立SSH连接时,出现提示询问我的SSH密钥密码。

我最初以为升级导致钥匙串忘记了一些密码,所以我重新输入了我的密码。显然,这不是原因,因为提示不断出现。

我首先虽然可能使用了错误的密码,但是使用了以下命令:

$ ssh-keygen -vvv -y -f id_rsa >| id_rsa.pub
debug3: Incorrect RSA1 identifier
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase:
debug3: Incorrect RSA1 identifier
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
load failed

...不起作用!如果我尝试使用openssl:

$ openssl rsa -in id_rsa -text
Enter pass phrase for id_rsa:
Private-Key: (2048 bit)
modulus:
    00:...

我的私钥已正确解密,并打印了所有信息。

升级到小牛队后发生了什么?如何使我的私钥恢复到可用状态?

Answers:


22

显然,我在机器上使用的私钥是旧的。如果生成新密钥,则我的密钥不包含添加到私钥文件中的加密信息:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-...

为了解决这个问题,我用openssl解密了密钥:

$ cd ~/.ssh
$ cp id_rsa id_rsa.bck
$ openssl rsa -in id_rsa -out id_rsa

...然后重新加密:

$ openssl rsa -in id_rsa -aes256 -out id_rsa
$ chmod 0600 id_rsa

以防万一,还要重新生成公钥:

$ ssh-keygen -y -f id_rsa > id_rsa.pub

3

我有同样的问题。我通过将.ssh / authorized_keys2移至.ssh / authorized_keys解决了此问题。

文件/ etc / sshd_config明确包含以下行:

\# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
\# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile  .ssh/authorized_keys

这与以前的macosx版本有所不同吗?


1
这个问题也不同。就我而言,我无法解密我的私钥。
GaretJax

2

同样的问题,我的键显示相同的行为。

我将问题追溯到此博客文章。我按照本手册中描述的方式修改了我的ssh键,以提高安全性,并且在Mountain Lion上也可以使用。 http://martin.kleppmann.com/2013/05/24/improving-security-of-ssh-private-keys.html

我认为Apple用openssh更改了一些东西,“新”版本无法读取较新的PKCS#8格式。

我的Mavericks OpenSSH版本: OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011

我没有其他Mac,因此无法与Mountain Lion版本进行比较。


/usr/bin/ssh -VOpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011在我的10.8.0 VM上打印。
Lri

询问,如果您有时间,可以检查如果使用pkcs#8密钥,“ ssh-keygen -vvv -y -f id_rsa”显示什么?
Tripplet

我的PKCS#8键,通过同样的链路导出,显示了这个:gist.github.com/cbowns/7359383/raw/...
cbowns

2

使用brew openssl和openssh修复了Mavericks上的PCKS#8问题。

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上的任何内容。到目前为止,我还没有发现任何问题。


0

我只需执行以下操作就可以解决此问题:

cd ~/.ssh
mv known_hosts known_hosts.old

现在去连接。当它询问标准问题时,添加指纹类型是。


但是不要忘记检查指纹!
Zigg 2013年

1
这是与我要问的问题不同的问题。已知的主机文件与此处遇到的问题(私钥的解密)没有关系
GaretJax 2013年

0

碰巧得到这个问题。通过尝试指定密码,我能够使其工作良好。

在Linux上,当您尝试生成密钥对时,请使用以下命令:

ssh-keygen -t rsa -Z aes256

现在OSX上的ssh可以正确识别密码为aes256的公钥(此处的我的密码为10.12.1)。


0

您可以将PuTTY密钥转换为OpenSSL OS X密钥:

puttygen putty.ppk -O private-openssh -o osx.key

输入密码,就可以完成。

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.