看来这ssh-add -K ~/.ssh/id_rsa
将加载您的密钥,但每次重新启动时都会要求输入密码。
我正在寻找一种不需要在两次登录之间重新输入密钥密码的解决方案。
id_rsa
钥匙上有密码。
ssh-add
,而是直接运行ssh
。您应该会弹出一个窗口,该窗口将作为密钥的密码短语,并带有一个复选框,供您将其存储在钥匙串中。
看来这ssh-add -K ~/.ssh/id_rsa
将加载您的密钥,但每次重新启动时都会要求输入密码。
我正在寻找一种不需要在两次登录之间重新输入密钥密码的解决方案。
id_rsa
钥匙上有密码。
ssh-add
,而是直接运行ssh
。您应该会弹出一个窗口,该窗口将作为密钥的密码短语,并带有一个复选框,供您将其存储在钥匙串中。
Answers:
在OSX上,本机ssh-add
客户端具有一个特殊参数,用于将私钥的密码短语保存在OSX钥匙串中,这意味着您的常规登录名将对其解锁以供ssh使用。在OSX Sierra和更高版本上,您还需要配置SSH以始终使用钥匙串(请参阅下面的步骤2)。
或者,您可以使用没有密码的密钥,但是如果您更喜欢此工作流程肯定可以接受的安全性。
只需执行一次:
ssh-add -K ~/.ssh/[your-private-key]
输入您的密钥密码,您将不再被要求输入密码。
(如果您使用的是Sierra之前版本的OSX,则操作完成,不需要步骤2。)
似乎OSX Sierra消除了在两次登录之间保留密钥的便利行为,默认情况下,对ssh的更新不再使用密钥链。因此,升级后,每次重新启动后,系统都会提示您输入密钥的密码。
该解决方案非常简单,并在此github线程注释中进行了概述。设置方法如下:
确保已完成上述步骤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钥匙串中查找其密码。无需输入密码。
ssh-add -K ...
将密钥添加到ssh代理,而不提示您输入密码,而仅提示当前会话。重新启动后,我不得不重新发出命令。
ssh-add -A
手动运行才能加载保存的钥匙串。上面引用了一些可能的解决方案。
.ssh/config
文件的解决方案看起来很有希望!见github.com/lionheart/openradar-mirror/issues/…–
A
,除了K
一个标志外,我还需要使用该标志将我的钥匙添加到钥匙串中,并将密码短语注册到其中(ssh-add -AK ~/.ssh/[your-private-key]
)。谢谢!
我有一个类似的问题,因为每次都会有人问我我的发布密钥密码短语。
根据上述用户“ trisweb”的建议,我将这些选项设置为〜/ .ssh / config:
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
但是,每次我想使用ssh时,它仍然提示。
最终,我打开“ ssh -v”并找到以下调试行:
debug1:key_load_private:提供了不正确的密码来解密私钥
然后,我在“ Keychain Access.app”中打开钥匙串,找到名为“ SSH:/Users/username/.ssh/id_rsa”的钥匙并将其打开。
我单击“显示密码”以披露密码,并确实发现密钥环中的密码是旧密码。
我在“钥匙串访问”中更新了密码,现在可以无密码使用了。
我也可以用以下短语更新密码:
ssh-keygen -p -f〜/ .ssh / id_rsa
每次都会提示您输入密码,因为您的“登录”钥匙串在闲置和/或休眠或重新启动后被锁定。有两种方法可以为您解决此问题。
更改“登录”钥匙串的设置。假设您的ssh密钥存储在“登录”钥匙串中。
在不使用密码的情况下生成另一个SSH密钥。
ssh-keygen -t rsa -b 4096 -C <comment> -f <.ssh/id_rsa>
ssh-add -K <path to ssh key>
不再提示您输入钥匙串密码。
ssh-add
从SSH内部调用时,security unlock-keychain
必须先调用。另外,我不必为该-f
参数创建目录。不幸的是,我仍然必须调用security unlocl-keychain
SSH会话才能访问登录钥匙串,每次都提示输入密码...
对于上述所有无效的地方,我的问题似乎是因为我在所有ssh密钥配置文件/快捷方式中都复制了UseKeychain yes
&AddKeysToAgent yes
。我将~/.ssh/config
文件更新为仅声明一次,现在它们都在登录时加载,而在启动时不提示输入密码,例如:
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/foo
IdentityFile ~/.ssh/bar
Host foo
HostName foo.com
User fooUser
IdentityFile ~/.ssh/foo
Host bar
HostName bar.com
User barUser
IdentityFile ~/.ssh/bar
在以下位置添加公钥:
.ssh/known_hosts
公钥通常位于:
/home/user/.ssh/id_rsa.pub
希望能有所帮助
authorized_keys