它曾经记得密码,但是现在每次都在问我。
我已经读到我需要使用以下命令重新生成公钥:
ssh-keygen -y -f id_rsa > id_rsa.pub
但它没有解决任何问题。
如何使macOS再次记住我的密码?
ssh
启用该模块zpretzorc
。无论如何,在macOS上都是不必要的,并且如果启用了它,即使添加了,它也会提示您输入密码UseKeychain
。
ssh -v ...
一下看看是否有任何有用的调试信息...
它曾经记得密码,但是现在每次都在问我。
我已经读到我需要使用以下命令重新生成公钥:
ssh-keygen -y -f id_rsa > id_rsa.pub
但它没有解决任何问题。
如何使macOS再次记住我的密码?
ssh
启用该模块zpretzorc
。无论如何,在macOS上都是不必要的,并且如果启用了它,即使添加了,它也会提示您输入密码UseKeychain
。
ssh -v ...
一下看看是否有任何有用的调试信息...
Answers:
在最新版本的macOS(10.12.2)中,此问题很容易解决。只需编辑您的~/.ssh/config
并启用UseKeychain
选项:
Host *
UseKeychain yes
无需更改其他任何内容。现在,一切都按最新更新之前的工作方式运行。您无需向添加密钥ssh-agent
。
Host *
块应该(几乎)始终放在~/.ssh/config
文件的底部。当ssh
寻找设置时,它将使用找到的第一个值。因此,通过将通配符块放在末尾,它可以作为一组默认值。您可以通过在文件的前面指定特定主机来覆盖它们的设置。
Host *
标题。如果您希望将其应用于所有主机,只需UseKeychain yes
在您的顶部附加一行.ssh/config
。
我有同样的问题。MacOS Sierra钥匙串不断要求输入密码。为了安全起见,您的id_rsa应该使用密码加密。然后尝试将其添加到钥匙串中ssh-add -K ~/.ssh/id_rsa
如果密钥在另一个文件夹中,~/.ssh
则用正确的文件夹替换。
钥匙串现在知道您的ssh密钥,并且希望现在所有工作都可以(我的确知道)
ssh-add
使用该-A
选项进行调用将在MacOS钥匙串中查找有关身份的任何密码。我相信如果密码不在钥匙串中,它将提示您。
这解决了我类似的问题:
/usr/bin/ssh-add -K
这会将密码短语存储在您的钥匙串中。
更新(感谢@EasyCo):此方法有效,但在两次重启之间不会持久存在。此页面上的@ jukka-suomela解决方案确实可在重新启动后起作用。您可以在这里找到答案:
我只需要输入一次正确的密码即可开始工作。问题是我不记得我原来的SSH密码,但是我通过遵循Github的以下步骤恢复了它:
在新的MacBook Pro上的El Capitan上安装Sierra之后,上述解决方案均无法正常工作。Sierra在设计上不会将SSH密钥保存在钥匙串中。
有两种解决方案对我有用。一种是将命令添加ssh-add -A &> /dev/null
到〜/ .bash_profile。每次打开终端时,都会执行此命令(该&> /dev/null
部分将命令的输出发送到文件/ dev / null)。
一个更复杂但略微易变的解决方案是使用每次将OS引导时执行的命令创建plist,如在macOS Sierra钥匙串中保存SSH密钥中所建议的那样。这涉及使用Xcode创建文件。
一种解决方法是将以下内容添加到〜/ .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
Bad configuration option: usekeychain
我用UseKeychain遇到的错误(但是大写)。但是,我是能够得到它通过删除只是线,留下AddKeysToAgent和IdentityFile工作(你还必须输入密码的第一次)。这与macOS Sierra 10.12.6一起提供。
which ssh
以确保您使用的是非/usr/bin/ssh
Fink或MacPorts的版本,该版本应类似于/usr/local/bin/ssh
或/opt/local/bin/ssh
今天早上,更新到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。
我在这里尝试了多个答案,但是仍然存在传递远程键的问题(例如,使用capistrano时)。为了解决这个问题,我从苹果公司阅读了技术说明,并将其作为配置文件。不再需要我的密码!
https://developer.apple.com/library/content/technotes/tn2449/_index.html
Host * IdentityFile ~/.ssh/id_rsa IgnoreUnknown UseKeychain UseKeychain yes AddKeysToAgent yes
当尝试使用Capistrano部署一些代码时,我也遇到了这个问题。非常沮丧。我知道有两种方法可以解决此问题。
因此,我发现一种解决方案是ssh-add
使用该-A
选项运行-使用存储在钥匙串中的任何密码将所有已知身份添加到SSH代理中,如下所示:
ssh-add -A
现在可以使用,但不会在重启后持续存在。因此,如果您不想再为此担心,只需打开用户的~/.bash_profile
文件,如下所示:
nano ~/.bash_profile
并将此行添加到底部:
ssh-add -A 2>/dev/null;
现在,当您打开一个新的终端窗口时,一切都会很好!
因此,尽管该ssh-add -A
选项适用于大多数基本情况,但最近我遇到了一个问题,即在较常见的机器上安装了6-7个Vagrant框(使用SSH密钥/身份进行访问)id_rsa.pub
。
长话短说,由于服务器访问基于密码,并且SSH密钥/身份是SSH密钥/身份,因此由于基于SSH密钥/身份的尝试失败太多,我最终被锁定在远程服务器之外。因此SSH代理尝试了我所有的SSH密钥,但均失败了,甚至无法进入密码提示符。
问题是,ssh-add -A
即使没有必要,它只会将您拥有的每个SSH密钥/身份随意添加到代理中。例如“无业游民”的盒子
经过大量测试后,我的解决方案如下。
首先,如果您向代理添加的SSH密钥/身份超出了您的需要,如图所示,ssh-add -l
则将其从代理中清除,如下所示:
ssh-add -D
完成后,将SSH代理作为后台进程启动,如下所示:
eval "$(ssh-agent -s)"
现在,它变得很奇怪,我不太确定为什么。在某些情况下,您可以~/.ssh/id_rsa.pub
像这样将密钥/身份专门添加到代理中:
ssh-add ~/.ssh/id_rsa.pub
输入您的密码短语,点击后就Return可以了。
但是在其他情况下,只需运行此命令就足以添加密钥/身份:
ssh-add -K
如果一切正常,请键入,ssh-add -l
然后应该会列出一个单独的SSH密钥/身份。
都好?现在打开您的.bash_profile
:
nano ~/.bash_profile
并将此行添加到底部;注释或删除该-A
版本(如果已安装):
ssh-add -K 2>/dev/null;
这将允许在每次启动/重新引导时将SSH密钥/身份重新加载到SSH代理。
UseKeychain
在打开的SSH配置选项中添加了一个选项,并考虑ssh-add -A
了一种解决方案。从macOS Sierra 10.12.2开始,Apple(我假设)UseKeychain
为SSH配置添加了config选项。检查手册页(通过man ssh_config
)显示以下信息:
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''.
归结为Apple认为该解决方案是按照Open Radar票证中的说明添加ssh-add -A
到您的解决方案中,或作为每个用户的选项之一添加。.bash_profile
UseKeychain
~/.ssh/config
Jukka Suomela的答案是正确的,但是如果您使用openssh
从安装homebrew
,则还需要使用以下命令将其卸载:
brew remove openssh
...切换回系统默认的openssh,因为自制软件不支持UseKeychain
ssh config条目。
我尝试了这里建议的所有解决方案,但我的Mac中没有设置钥匙串。
.ssh/config
在本地和远程计算机上的文件顶部添加以下内容对我来说很有效。
PubkeyAcceptedKeyTypes=+ssh-dss
你需要.plist
添加到文件~/Library/LaunchAgents/
运行ssh-add -A
在Mac OS的每次启动。
有一个命令可以执行此操作(来自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