如何修复:MacOS在升级或重新引导后不断要求密码输入ssh密钥

时间:2020-01-09 10:40:15  来源:igfitidea点击:

升级MacOS Sierra后,它似乎不记得在Mac重新启动之间的SSH密钥

ssh命令不断询问密码:Enter passphrase for key /Users/Hyman/.ssh/id_ed25519:

如何修复这个问题?

让我们看看"如何使用各种方法来修复破坏我的SSH密钥的MacOS sierra升级"。

方法#1:修复了macOS在更新到Sierra或重启后不断询问ssh密码的问题

您需要在~/.ssh/config文件中使用UseKeychain选项。
在ssh_config手册页中:

在macOS上,指定在尝试使用特定密钥时系统是否应在用户密钥链中搜索密码短语。
当用户提供密码短语时,此选项还指定在验证正确后是否应将密码短语存储在钥匙串中。
参数必须为是或否。
默认为"否"。

这是所有用户最简单,推荐的解决方案。
编辑~/.ssh/config文件:

$ vi ~/.ssh/config

在主机*部分中添加以下行:

UseKeychain yes

这是我的示例文件:

Host *
        ServerAliveInterval 10
        ControlPath ~/.ssh/controlmasters/%r@%h:%p
        ControlMaster auto
        ControlPersist yes
        ProtocolKeepAlives 120
        UseRoaming no
        UseKeychain yes

保存并关闭文件。
这应该迫使ssh记住用户在钥匙串中的钥匙:

$ ssh user@server
$ ssh [email protected]

方法2:使用ssh-agent/ssh-add将所有已知密钥添加到SSH代理

在Linux/Unix/MacOS系统上使用SSH密钥的语法如下:

##  Create the key pair using ssh-keygen command ## 
ssh-keygen -t rsa
 
## Install the public key using ssh-copy-id command ##
ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]
 
## Update your shell profile file 
echo 'ssh-add -A 2>/dev/null' >> ~/.bash_profile
 
## Try it now 
eval $(ssh-agent)
ssh-add

方法3:使用钥匙串

OpenSSH无需提供密码即可向远程系统提供RSA和DSA身份验证。

keychain是一种特殊的bash脚本,旨在使基于密钥的身份验证变得异常便捷和灵活。
与无密码密钥相比,它具有各种安全优势。

如下安装钥匙串:

$ brew install keychain

输出示例:

=-  Using the sandbox
=-  Downloading http://build.funtoo.org/distfiles/keychain/keychain-2.8.3.tar.bz
######################################################################## 100.0%
?  /usr/local/Cellar/keychain/2.8.3: 7 files, 106.2K, built in 3 seconds

在ssh配置文件中添加以下代码(假设您正在使用id_rsa文件):

echo '/usr/local/bin/keychain $HOME/.ssh/id_rsa' >> ~/.bash_profile
echo 'source $HOME/.keychain/$HOSTNAME-sh'  ~/.bash_profile