我有一个用密码保护的私钥,可以通过SSH访问服务器。
我有2台linux (ubuntu 10.04)机器,ssh-add命令的行为在它们中都是不同的。
在一台机器上,一旦我使用“ssh-add .ssh/identity”并输入密码,密钥就被永久添加了,即每次我关闭计算机并再次登录时,密钥就已经添加了。
在另一个系统中,我必须在每次登录时添加密钥。
在我的记忆中,我对两个都做了同样的事情。唯一的区别是,密钥是在永久添加的密钥上创建的。
有人知道如何将它永久地添加到另一台机器吗?
我有一个用密码保护的私钥,可以通过SSH访问服务器。
我有2台linux (ubuntu 10.04)机器,ssh-add命令的行为在它们中都是不同的。
在一台机器上,一旦我使用“ssh-add .ssh/identity”并输入密码,密钥就被永久添加了,即每次我关闭计算机并再次登录时,密钥就已经添加了。
在另一个系统中,我必须在每次登录时添加密钥。
在我的记忆中,我对两个都做了同样的事情。唯一的区别是,密钥是在永久添加的密钥上创建的。
有人知道如何将它永久地添加到另一台机器吗?
当前回答
对于那些使用Fish shell的程序,你可以使用下面的函数,然后在~/.config/ Fish /config中调用它。Fish或在~/.config/ Fish /conf.d/loadsshkeys.fish中的单独配置文件中。它将把所有以id_rsa开头的密钥加载到ssh-agent中。
# Load all ssh keys that start with "id_rsa"
function loadsshkeys
set added_keys (ssh-add -l)
for key in (find ~/.ssh/ -not -name "*.pub" -a -iname "id_rsa*")
if test ! (echo $added_keys | grep -o -e $key)
ssh-add "$key"
end
end
end
# Call the function to run it.
loadsshkeys
如果您想在打开终端时自动启动ssh-agent,可以使用danhper/fish-ssh-agent来实现这一点。
其他回答
在Mac OS X Lion系统下,这并没有为我解决同样的问题。最后我补充道:
ssh-add ~/.ssh/id_rsa &>/dev/null
到我的.zshrc(但.profile也可以),这似乎已经修复了它。
(建议地址:http://geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/)
对于那些使用Fish shell的程序,你可以使用下面的函数,然后在~/.config/ Fish /config中调用它。Fish或在~/.config/ Fish /conf.d/loadsshkeys.fish中的单独配置文件中。它将把所有以id_rsa开头的密钥加载到ssh-agent中。
# Load all ssh keys that start with "id_rsa"
function loadsshkeys
set added_keys (ssh-add -l)
for key in (find ~/.ssh/ -not -name "*.pub" -a -iname "id_rsa*")
if test ! (echo $added_keys | grep -o -e $key)
ssh-add "$key"
end
end
end
# Call the function to run it.
loadsshkeys
如果您想在打开终端时自动启动ssh-agent,可以使用danhper/fish-ssh-agent来实现这一点。
对我来说,解决方案是:
配置文件的权限应该是600。Chmod 600 config
如上面的评论所述 generalopinion
无需修改配置文件内容。
我使用两个id_rsa密钥运行Ubuntu。(工作用一个)。 Ssh-add每次都会记住一个密钥(个人密钥),而忘记公司密钥。
查看两者之间的差异,我发现我的个人密钥有400个权限,而公司密钥有600个权限。(u + w)。 从公司密钥中删除用户写入权限(u-w或设置为400)解决了我的问题。Ssh-add现在记住两个键。
这对我很管用。
ssh-agent /bin/sh
ssh-add /path/to/your/key