title: macOS 将密码储存到钥匙串 date: 2017.8.1 tag: 备忘录


在已经设置好免密登录的电脑上,总是提示输入密码

看来ssh-add -K ~/.ssh/id_rsa会加载您的密钥,但会在每次重新启动时要求密码。 我正在寻找一个解决方案,不需要我re-enter登录之间的密钥密码。 最佳解决方案

在OSX上,本机ssh-add客户端有一个特殊的参数,用于将密钥的密码保存在OSX钥匙串中,这意味着您的正常登录将会解锁以供ssh使用。在OSX Sierra及更高版本上,您还需要配置SSH以始终使用钥匙串(请参阅下面的步骤2)。 或者,您可以使用没有密码的密钥,但如果您更喜欢此工作流程当然可以接受的安全性。 步骤1 – 将钥匙存放在钥匙扣中

只要这样做一次: ssh-add -K ~/.ssh/[your-private-key] 输入您的密钥密码,您将不再被要求。 (如果您使用的是早期版本的OSX(pre-Sierra),则表明您已完成步骤2。) 步骤2 – 配置SSH始终使用钥匙串

看来,OSX Sierra删除了在登录之间持久存储键的方便行为,并且ssh的更新默认情况下不再使用钥匙串。因此,您将在升级后再次提示输入密码,并在每次重新启动后再次输入密码。 该解决方案相当简单,并在this github thread comment中概述。以下是您设置的方式: 确保您已完成上述步骤1以将钥匙存储在钥匙扣中。 如果还没有,请创建一个~/.ssh/config文件。换句话说,在家庭目录中的.ssh目录中,制作一个名为config的文件。 在该.ssh/config文件中,添加以下行: Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa 将~/.ssh/id_rsa更改为私钥的实际文件名。如果您的~.ssh目录中有其他私钥,还可以为其中的每一个添加一个IdentityFile线。例如,我有另外一行读取第二个私钥的IdentityFile ~/.ssh/id_ed25519。 UseKeychain yes是关键部分,它告诉SSH查看您的OSX钥匙串中的密钥密码。 而已!下次加载任何ssh连接时,将尝试您指定的私钥,并在OSX钥匙串中查找密码。不需要密码输入。 次佳解决方案

每次都会提示您输入密码,因为您的”login”钥匙串在不活动和/或睡眠或在您的情况下重新启动时被锁定。有两种方法可以为您解决这个问题。 更改”login”钥匙串的设置。假设您的ssh密钥存储在”login”钥匙串中。 打开钥匙串访问 突出显示”login”钥匙串 Right-click或option-click “login”钥匙扣 取消选中“X分钟不活动后锁定”和“睡眠时锁定”复选框。 生成另一个SSH密钥,而不使用密码。 打开终端 输入命令:ssh-keygen -t rsa -b 4096 -C -f <.ssh/id_rsa> -t是类型,-b是关键字大小,-C是注释,-f输出文件(必须先创建目录) 不要设定密码。 使用ssh-add -K 将SSH密钥导入”login”钥匙扣 您不应再被提示输入钥匙串密码。 参考文献

How can I permanently add my SSH private key to Keychain so it is automatically available to ssh?