它曾经记得密码,但是现在每次都在问我。

我读到我需要使用此命令来重新生成公钥,我这样做了:

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


,但是它不能解决任何问题。

如何使macOS再次记住我的密码?

评论

我遇到了相关的行为:之前,会弹出“钥匙圈”对话框,要求输入密码,现在我只看到常规的SSH控制台提示。一些帮助程序的注册可能已丢失。

自生成id_rsa以来已有好几年了,我从未使用过密码短语,而是使用它来将SSH SSH到许多服务器中。我是否真的有密码短语,还是Sierra认为我应该这样做?注意$ cat〜/ .ssh / id_rsa | head -2 ----- BEGIN RSA PRIVATE KEY -----程序类型:4,ENCRYPTED

apple.stackexchange.com/q/254468/62697的副本

如果您使用的是Pretzo,但以下任何一个答案都不能解决您的问题:确保您没有在zpretzorc中启用ssh模块。无论如何,在macOS上都是不必要的,如果启用,即使添加了UseKeychain,它也会提示您输入密码。

尝试做ssh -v ...看看它是否有任何有用的调试信息...

#1 楼

在最新版本的macOS(10.12.2)中,此问题很容易解决。只需编辑您的~/.ssh/config并启用UseKeychain选项即可:

Host *
    UseKeychain yes


无需更改其他任何内容。现在,一切都按过去更新之前的工作方式运行。您不需要向ssh-agent添加密钥。


编辑:您可能仍然需要输入一次密码。如果您不知道,请按照以下说明进行操作。

评论


这绝对对我有用。下面的所有内容似乎都比此修复程序复杂。

– Br.Bill
16/12/19在23:26

注意,Host *块(几乎)应该始终放在〜/ .ssh / config文件的底部。当ssh寻找设置时,它将使用找到的第一个值。因此,通过将通配符块放在末尾,它可以作为一组默认值。您可以通过在文件的前面指定特定主机来覆盖它们的设置。

– Molomby
17年1月9日,0:10

这对我也很有效,但是我确实必须正确输入一次密码。还有另一个答案,描述了如果您不记得密码的情况下如何查看密码。

– FGreg
17年1月19日在17:45

如果配置文件不存在,则创建一个配置文件并将其添加也可以。

– Wynshaft
17-2-22在14:38

您不需要Host *标题。如果您希望将其应用于所有主机,只需在.ssh / config的顶部附加单行UseKeychain yes。

– sj26
17-3-22在1:07



#2 楼

我有同样的问题。 MacOS Sierra钥匙串不断要求输入密码。为了安全起见,您的id_rsa应该使用密码加密。然后尝试将其添加到钥匙串中。如果钥匙不在ssh-add -K ~/.ssh/id_rsa中,请替换为正确的文件夹。

钥匙串现在知道您的ssh钥匙,并且希望,现在所有作品(我的做了)

评论


这可以正常工作,但在重新启动计算机后似乎无法持久。还有其他人遇到同样的问题吗?

– joshua.paling
16-09-26在10:39

是的,这里也是同样的问题。 @ joshua.paling

– kingkool68
16-09-26在13:56

@ joshua.paling,kingkool68-苹果已经删除了重新引导时记住SSH密钥的功能,以便符合主流的OpenSSH行为。有关实现相同功能的其他方法,请参见此问题:apple.stackexchange.com/questions/254468/…

–埃文·庞(Evan Pon)
16-10-12在16:53

@EvanPon但这不适用于加密密钥,对吗?

–康拉德·鲁道夫(Konrad Rudolph)
16-10-26在16:31



@KonradRudolph它对我有用。使用-A选项调用ssh-add将在MacOS钥匙串中查找有关身份的任何密码。我相信如果密码不在钥匙串中,它将提示您。

–埃文·庞(Evan Pon)
16-10-27在0:26

#3 楼

这修复了我的类似问题:

/usr/bin/ssh-add -K


此将密码短语存储在您的钥匙串中。

更新(感谢@EasyCo):
此可以,但是在两次重启之间不会持久。此页面上的@ jukka-suomela解决方案可在重新启动后正常运行。您可以在这里找到答案:

https://superuser.com/a/1158050/234685

评论


这是唯一有效的方法。

–cryptic0
17年4月20日在20:22

使用此解决方案时,不需要创建.ssh / .config。

–上海
17年5月13日在18:12

这对我有用。无需编辑主机文件。我在塞拉上。

–cchiera
17年8月29日在13:31

这在Mac OS Sierra上对我有用。

–代伦·加拉多(Dayron Gallardo)
17-10-11在0:54

如前所述,此方法有效,但在两次重启之间不会持久。 @ jukka-suomela的解决方案跨重新启动工作。

– EasyCo
17年11月15日在21:58

#4 楼

我只需要输入一次正确的密码即可开始工作。问题是我不记得我原来的SSH密码,而是通过从Github遵循以下步骤恢复了它:


在Finder中,搜索“钥匙串访问”应用程序。
在“钥匙串访问”中搜索SSH。
双击您的SSH密钥条目以打开一个新对话框。
“钥匙串访问”对话框在左下角,选择“显示密码”。
系统将提示您输入管理密码。在“钥匙串访问”对话框中键入它。
您的密码将显示出来。


评论


不起作用终端仍然说“密码错误”

–杰登·劳森(Jayden Lawson)
17年8月31日在3:24

#5 楼

在新的MacBook Pro上的El Capitan上安装Sierra之后,以上解决方案均无效。 Sierra在设计上不会将SSH密钥保存在钥匙串中。

有两种解决方案对我有用。一种是将命令ssh-add -A &> /dev/null添加到〜/ .bash_profile。每次您打开终端时,都会执行此命令(&> /dev/null部分将命令的输出发送到文件/ dev / null)。

一个更复杂但略显模糊的解决方案是创建一个plist使用每次引导OS时执行的命令,如在macOS Sierra钥匙串中保存SSH密钥中所建议的那样。这涉及使用Xcode创建文件。

评论


这似乎也是苹果公司的官方答案-请参阅openradar.appspot.com/27348363

–尼克·梅纳德(Nick Maynard)
16-09-30在15:53

到目前为止,对我来说最好的解决方案。我正在使用Mac OSX Sierra(10.12.2)。

– zyc
17年1月11日在16:40

#6 楼

一种解决方法是将以下内容添加到您的〜/ .ssh / config文件中:

Host *
   AddKeysToAgent yes
   IdentityFile ~/.ssh/id_rsa
   UseKeychain yes


来自:https://www.reddit.com/r/osx / comments / 52zn5r / difficulties_with_sshagent_in_macos_sierra /
另请参见:https://apple.stackexchange.com/a/264974/3810

评论


到目前为止,在所有答案中,没有人提到过错误的配置选项:UseKeychain引起的usekeychain错误(无论如何大写)。但是我可以通过删除该行并保留AddKeysToAgent和IdentityFile来使其工作(您仍然必须在第一次输入密码)。这与macOS Sierra 10.12.6一起提供。

–威廉·特瑞尔
17年8月29日在12:47

当我在终端中并使用ssh命令时,此方法可以正常工作,但其他应用程序(例如使用自己的终端的WebStorm)在我在常规终端中首次使用ssh命令之前不会进行此配置。然后它随处可见,有什么建议吗?

–圣地亚哥·亚利桑那
18年4月17日在16:53

@WilliamTurrell如果仍然发生这种情况,请键入该ssh以确保您使用的是/ usr / bin / ssh,而不是Fink或MacPorts的版本,该版本应位于/ usr / local / bin / ssh或/ opt / local下/ bin / ssh

– Stefan Lasiewski
18年5月17日在21:25

#7 楼

今天早上,更新到Sierra之后,我遇到了与您相同的问题。就我而言,id_rsa文件已加密,解密后它像一个超级按钮一样正常工作。


验证是否使用以下命令对id_rsa文件进行了加密:cat ~/.ssh/id_rsa | head -2

如果第二行显示Proc-Type: 4,ENCRYPTED,则表明它已加密,您可以尝试对其进行解密。
重要:备份原始id_rsa文件!使用命令cp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak

openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decrypted解密私钥

删除原始密钥(rm ~/.ssh/id_rsa)并用解密的密钥替换:mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa


完成这些步骤后,您应该可以再次使用ssh。

评论


尽管这是一种变通方法,但我认为它不能真正解决OP的问题。

–丹尼尔B
16-09-22在11:05

这对我有用。 @DanielB,这样做有什么问题?

– DagHøidahl
16-09-26在12:55

@DagHøidahl密钥将不再加密。常规用户权限可能会盗用它,因此加密是很重要的。

–丹尼尔B
16 Sep 26 '13:50



这将从密钥中删除密码,这就是为什么它可以解决OP问题的原因。但是我建议不要这样做。密码被窃取后,会阻止人们使用您的密钥。由于您的密钥可能会提供对多个系统的访问权限,因此您不想削弱它。

–马丁·海默斯(Martijn Heemels)
16-10-1在18:41

#8 楼

我在这里尝试了多个答案,但是仍然存在传递远程密钥的问题(例如,使用capistrano时)。为了解决这个问题,我从苹果公司阅读了技术说明,并将其作为配置文件。不再需要我的密码!

https://developer.apple.com/library/content/technotes/tn2449/_index.html


Host *  
   IdentityFile ~/.ssh/id_rsa  
   IgnoreUnknown UseKeychain  
   UseKeychain yes  
   AddKeysToAgent yes



#9 楼

当尝试使用Capistrano部署一些代码时,我也遇到了这个问题。非常沮丧。我知道有两种方法可以解决此问题。

方法1:将所有已知的密钥添加到SSH代理。

所以我找到的一种解决方案是运行ssh-add带有-A选项(可使用存储在钥匙串中的任何密码将所有已知身份添加到SSH代理中),例如:

ssh-add -A


现在可以使用,但不能使用在重启后仍然存在。因此,如果您不想再为此担心,只需打开用户的~/.bash_profile文件,如下所示:

nano ~/.bash_profile


并将此行添加到底部:

ssh-add -A 2>/dev/null;


现在,当您打开新的“终端”窗口时,一切都应该很好!

方法2:仅将钥匙串中的SSH密钥添加到代理。

因此,尽管ssh-add -A选项适用于大多数基本情况,但最近我遇到了一个问题,在该机器上,我在计算机上安装了6-7个Vagrant框(使用SSH密钥/身份进行访问)

长话短说,由于基于SSH密钥/身份的尝试失败太多,我最终被锁定在远程服务器之外,因为服务器访问基于密码和SSH密钥/身份是SSH密钥/身份。因此SSH代理尝试了我所有的SSH密钥,但均失败了,甚至无法进入密码提示。

问题是id_rsa.pub会随意添加您必须添加的每个SSH密钥/身份代理商,即使没有必要这样做;例如Vagrant box。

经过大量测试后,我的解决方案如下。

首先,如果您添加到代理中的SSH密钥/标识比您多需要-如ssh-add -A所示,然后从代理中清除它们,如下所示:

ssh-add -D


完成后,然后将SSH代理作为后台进程启动,如下所示:

eval "$(ssh-agent -s)"


现在,它变得很奇怪,我不太确定为什么。在某些情况下,您可以像这样专门为代理添加ssh-add -l密钥/身份:

ssh-add ~/.ssh/id_rsa.pub


输入密码,按回车键,就可以了。

,但在其他情况下,只需运行此命令即可添加密钥/身份:

ssh-add -K


如果一切正常,请键入~/.ssh/id_rsa.pub并且您应该会看到列出了一个单独的SSH密钥/身份。

一切都好吗?现在打开您的ssh-add -l

nano ~/.bash_profile


,并将此行添加到底部;注释或删除.bash_profile版本(如果已安装):

ssh-add -K 2>/dev/null;


这将允许在每次启动/重新启动时将SSH密钥/身份重新加载到SSH代理。

更新:Apple现在已在打开的SSH配置选项中添加了-A选项,并也考虑了UseKeychain解决方案。

从macOS Sierra 10.12.2开始,Apple(我假设)为SSH配置添加了ssh-add -A配置选项。检查手册页(通过UseKeychain)显示以下信息:

UseKeychain
        On macOS, specifies whether the system should search for
        passphrases in the user's keychain when attempting to use a par-
        ticular key. When the passphrase is provided by the user, this
        option also specifies whether the passphrase should be stored
        into the keychain once it has been verified to be correct.  The
        argument must be ``yes'' or ``no''.  The default is ``no''.


归结为苹果,该解决方案是将man ssh_config添加到您的ssh-add -A中,如本公开中所述雷达票或将.bash_profile添加为每个用户UseKeychain中的选项之一。

#10 楼

Jukka Suomela的答案是正确的,但是如果您使用的是从openssh安装的homebrew,那么还需要使用以下命令将其卸载:

brew remove openssh


...切换回系统默认为openssh,因为自制软件不支持UseKeychain ssh配置条目。

评论


如果有人需要自制软件,请在此处ping我:github.com/rdp/homebrew-openssh-gssapi

–rogerdpack
17年12月1日在17:49

#11 楼

我尝试了这里建议的所有解决方案,但我的Mac中没有设置钥匙串。

在本地和远程计算机上的.ssh/config文件顶部添加以下行对我来说都是有效的。 />
PubkeyAcceptedKeyTypes=+ssh-dss 


#12 楼

您需要将.plist文件添加到~/Library/LaunchAgents/,以便在每次启动macOS时运行ssh-add -A

有一个命令可以执行此操作(来自SSH-keys-in-macOS-Sierra-keychain),该命令是:

curl -o ~/Library/LaunchAgents/ssh.add.a.plist https://raw.githubusercontent.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain/master/ssh.add.a.plist