它曾经记住密码,但现在每次都向我询问。
我读过我需要用这个命令重新生成公钥,我这样做了:
ssh-keygen -y -f id_rsa > id_rsa.pub
Run Code Online (Sandbox Code Playgroud)
但它没有解决任何问题。
如何让 macOS 再次记住我的密码?
Juk*_*ela 1266
在最新版本的 macOS (10.12.2) 中,这个问题很容易解决。只需编辑您的~/.ssh/config
并启用该UseKeychain
选项:
Host *
UseKeychain yes
Run Code Online (Sandbox Code Playgroud)
无需更改任何其他内容。现在,一切都按照最新更新之前的工作方式进行。您不需要将密钥添加到ssh-agent
.
编辑:您可能仍需要输入一次密码。如果您不知道,请按照以下说明进行操作。
小智 210
我有同样的问题。MacOS Sierra 钥匙串不断询问密码。为了安全起见,您的 id_rsa 应该使用密码加密。然后尝试将其添加到钥匙串ssh-add -K ~/.ssh/id_rsa
如果您的密钥在另一个文件夹中,~/.ssh
则用正确的文件夹替换。
钥匙串现在知道你的 ssh 密钥,希望现在一切正常(我的)
Rao*_*oul 84
这解决了我的类似问题:
/usr/bin/ssh-add -K
Run Code Online (Sandbox Code Playgroud)
这会将密码存储在您的钥匙串中。
更新(感谢@EasyCo):这有效,但在重新启动之间不会持续。@jukka-suomela 在此页面上的解决方案确实可以跨重启工作。你可以在这里找到答案:
https://superuser.com/a/1158050/234685
小智 43
我只需要输入一次正确的密码,它就开始工作了。问题是我不记得我原来的 SSH 密码,但我按照以下步骤从 Github恢复了它:
小智 19
在新的 MacBook Pro 上通过 El Capitan 安装 Sierra 后,上述解决方案均无效。Sierra 的设计不会将 SSH 密钥保存在钥匙串中。
两种解决方案对我有用。一种是将命令添加ssh-add -A &> /dev/null
到~/.bash_profile。每次打开终端,都会执行这个命令(该&> /dev/null
部分将命令的输出发送到文件/dev/null)。
一个更复杂但稍微灵活的解决方案是使用每次启动操作系统时执行的命令创建一个 plist,如在 macOS Sierra 钥匙串中保存 SSH 密钥中的建议。这涉及使用 Xcode 创建文件。
小智 18
一种解决方法是将以下内容添加到您的 ~/.ssh/config 文件中:
Host *
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
UseKeychain yes
Run Code Online (Sandbox Code Playgroud)
摘自:https : //www.reddit.com/r/osx/comments/52zn5r/difficulties_with_sshagent_in_macos_sierra/ 另见:https : //apple.stackexchange.com/a/264974/3810
小智 8
今天早上,我在更新到 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。
小智 8
我在这里尝试了多个答案,但仍然遇到远程密钥传递问题(例如使用 capistrano 时)。为了解决这个问题,我阅读了苹果的技术说明并将其作为我的配置文件。不再要求我的密码!
https://developer.apple.com/library/content/technotes/tn2449/_index.html
Run Code Online (Sandbox Code Playgroud)Host * IdentityFile ~/.ssh/id_rsa IgnoreUnknown UseKeychain UseKeychain yes AddKeysToAgent yes
小智 8
我开始在使用 MacOS Monterrey 时遇到同样的问题。我刚刚注意到,当我尝试使用以下命令添加密钥时:
/usr/bin/ssh-add -K /path/to/my-key
Run Code Online (Sandbox Code Playgroud)
我看到了这个:
WARNING: The -K and -A flags are deprecated and have been replaced
by the --apple-use-keychain and --apple-load-keychain
flags, respectively. To suppress this warning, set the
environment variable APPLE_SSH_ADD_BEHAVIOR as described in
the ssh-add(1) manual page.
Run Code Online (Sandbox Code Playgroud)
所以我用了:
/usr/bin/ssh-add --apple-use-keychain /path/to/my-key
Run Code Online (Sandbox Code Playgroud)
如果其他人在使用 MacOS Monterrey 时遇到此问题,请添加此答案。
我在尝试使用Capistrano部署一些代码时也遇到了这个问题。非常令人沮丧。以下是我所知道的两种处理此问题的方法。
因此,我找到的一种解决方案是ssh-add
使用该-A
选项运行——它使用存储在钥匙串中的任何密码将所有已知身份添加到 SSH 代理——如下所示:
ssh-add -A
Run Code Online (Sandbox Code Playgroud)
现在这有效,但它不会在重新启动后持续存在。所以如果你不想再担心这个,只需~/.bash_profile
像这样打开你的用户文件:
nano ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)
并将此行添加到底部:
ssh-add -A 2>/dev/null;
Run Code Online (Sandbox Code Playgroud)
现在当你打开一个新的终端窗口时,一切都应该很好!
因此,虽然该ssh-add -A
选项应该适用于大多数基本情况,但我最近遇到了一个问题,我在一台更常见的机器上设置了 6-7 个 Vagrant 盒子(使用 SSH 密钥/身份进行访问)id_rsa.pub
。
长话短说,由于基于 SSH 密钥/身份的太多失败尝试,我最终被锁定在远程服务器之外,因为服务器访问是基于密码的,而 SSH 密钥/身份是 SSH 密钥/身份。所以 SSH 代理尝试了我所有的 SSH 密钥,失败了,我什至无法进入密码提示。
问题是,ssh-add -A
即使没有必要,它也会随意将您拥有的每个 SSH 密钥/身份添加到代理中;例如在 Vagrant 盒子的情况下。
经过多次测试,我的解决方案如下。
首先,如果您添加到代理中的 SSH 密钥/身份比您需要的多——如图所示,ssh-add -l
然后将它们从代理中全部清除,如下所示:
ssh-add -D
Run Code Online (Sandbox Code Playgroud)
完成后,然后将 SSH 代理作为后台进程启动,如下所示:
eval "$(ssh-agent -s)"
Run Code Online (Sandbox Code Playgroud)
现在,它变得很奇怪,我不太确定为什么。在某些情况下,您可以专门将~/.ssh/id_rsa.pub
密钥/身份添加到代理中,如下所示:
ssh-add ~/.ssh/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)
输入您的密码,点击Return,您应该很高兴。
但在其他情况下,只需运行它就足以添加密钥/身份:
ssh-add -K
Run Code Online (Sandbox Code Playgroud)
如果一切正常,请输入ssh-add -l
,您应该会看到列出了一个单独的 SSH 密钥/身份。
都好?现在打开你的.bash_profile
:
nano ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)
并将这一行添加到底部;-A
如果您有该版本,请评论或删除该版本:
ssh-add -K 2>/dev/null;
Run Code Online (Sandbox Code Playgroud)
这将允许在每次启动/重新启动时将 SSH 密钥/身份重新加载到 SSH 代理。
UseKeychain
在开放的 SSH 配置选项中添加了一个选项,并考虑ssh-add -A
了一个解决方案。从 macOS Sierra 10.12.2 开始,Apple(我假设)已经UseKeychain
为 SSH 配置添加了一个配置选项。检查手册页(通过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''.
Run Code Online (Sandbox Code Playgroud)
这归结为 Apple 将解决方案视为添加ssh-add -A
到您.bash_profile
在此 Open Radar 票证中的解释或添加UseKeychain
为每个用户的选项之一~/.ssh/config
。
归档时间: |
|
查看次数: |
240799 次 |
最近记录: |