我有一个用密码保护的私钥,可以通过SSH访问服务器。

我有2台linux (ubuntu 10.04)机器,ssh-add命令的行为在它们中都是不同的。

在一台机器上,一旦我使用“ssh-add .ssh/identity”并输入密码,密钥就被永久添加了,即每次我关闭计算机并再次登录时,密钥就已经添加了。

在另一个系统中,我必须在每次登录时添加密钥。

在我的记忆中,我对两个都做了同样的事情。唯一的区别是,密钥是在永久添加的密钥上创建的。

有人知道如何将它永久地添加到另一台机器吗?


当前回答

我在Ubuntu 16.04上也遇到了同样的问题:一些密钥是永久添加的,对于其他密钥,我必须在每次会话中执行ssh-add。我发现永久添加的密匙同时具有位于~/中的私钥和公钥。SSH和在每个会话上被遗忘的密钥在~/中只有私钥。ssh dir。因此解决方案很简单:您应该将私钥和公钥复制到~/。执行SSH -add前,请先执行SSH命令。

附注:据我从Gnome wiki了解,我的方法是通过Gnome -keyring工具工作的,这是Gnome桌面环境的一部分。因此,我的方法可能只适用于使用Gnome或基于Gnome的DE。

其他回答

非常简单的^_^两步

1.Yum安装keychain

2.将下面的代码添加到.bash_profile

/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh

解决方案是通过将密钥文件添加到~/中,强制永久保存密钥文件。ssh /配置文件:

IdentityFile ~/.ssh/gitHubKey
IdentityFile ~/.ssh/id_rsa_buhlServer

如果在~/. conf文件中没有'config'文件。SSH目录,那么您应该创建一个。它不需要根权限,所以很简单:

nano ~/.ssh/config

...并按您的要求输入上面的行。

要做到这一点,文件需要chmod 600。可以使用chmod 600 ~/.ssh/config命令。

如果您希望计算机上的所有用户都使用该密钥,请将这些行放到/etc/ssh/ssh_config中,并将密钥放在所有人都可以访问的文件夹中。

此外,如果您想设置特定于一台主机的键,可以在~/中执行以下操作。ssh / config:

Host github.com
    User git
    IdentityFile ~/.ssh/githubKey

当您有许多身份时,这样做具有优势,服务器不会因为您首先尝试了错误的身份而拒绝您。只会尝试特定的身份。

这对我很管用。

ssh-agent /bin/sh
ssh-add /path/to/your/key

在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来实现这一点。