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

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

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

在另一种情况下,我每次登录时都必须添加密钥。

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

有谁知道如何将其永久添加到另一台机器上?

有帮助吗?

解决方案

有一个解决办法是强制的关键文件被永久保存,通过在~/.ssh/config文件中添加他们:

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

如果您没有在〜/ .ssh目录“配置”文件,那么你应该创建一个。它并不需要根的权利,所以简单地:

nano ~/.ssh/config

...和输入上面按您的要求的线条。

对于这个工作的文件需要具有CHMOD 600可以使用命令chmod 600 ~/.ssh/config

如果您想在计算机上的所有用户使用密钥把这些线变成/etc/ssh/ssh_config和文件夹中的关键,所有的访问。

此外,如果你想在特定的键设置为一台主机,你可以做你的〜/ .ssh / config中的以下内容:

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

这有,当你有很多身份,一个服务器不会拒绝你,因为你第一次尝试错误的身份优势。只有特定的身份将受到审判。

其他提示

这并没有回答我在Mac OS X Lion的同样的问题。我结束了加入:

ssh-add ~/.ssh/id_rsa &>/dev/null

要我的.zshrc(但.profile文件将被罚款过),这似乎已经固定它。

(如这里建议: http://geek.michaelgrace.org / 2011/09 /永久附加的ssh密钥-SSH-ADD /

我解决了这个问题在Mac OSX(10.10)通过使用-K选项对SSH-ADD:

ssh-add -K ~/.ssh/your_private_key

适用于MacOS 10.12及更高版本,你需要额外编辑您的ssh配置如下所述:的 https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain

只需添加钥匙串,如 Ubuntu 快速提示中所述https://help.ubuntu.com/community/QuickTips

什么

可以使用钥匙串来管理 ssh 密钥,而不是不断启动 ssh-agent 和 ssh-add。要安装钥匙串,您只需单击此处,或使用 Synaptic 来完成该工作或从命令行使用 apt-get。

命令行

安装文件的另一种方法是打开终端(应用程序->附件->终端)并键入:

sudo apt-get install keychain

编辑文件

然后,您应该将以下行添加到 ${HOME}/.bashrc 或 /etc/bash.bashrc 中:

keychain id_rsa id_dsa
. ~/.keychain/`uname -n`-sh

我试过@亚伦的解决方案,它并没有完全为我工作,因为它会每次我在终端开设了一个新的标签页时重新加我的钥匙。所以我修改了一点(注意,大多数我的钥匙也都是密码保护的,所以我不能只将输出发送到/ dev / null的):

added_keys=`ssh-add -l`

if [ ! $(echo $added_keys | grep -o -e my_key) ]; then
    ssh-add "$HOME/.ssh/my_key"
fi

这里做的事情是,它会检查ssh-add -l的输出(其中列出了已添加的所有键)为特定的关键,如果没有找到它,然后将它与ssh-add添加它。

现在我第一次打开我的终端,我问了密码我的私钥,我再也不问,直到我重启(或注销 - 我没有检查)。我的电脑

由于我有一串钥匙我ssh-add -l的输出存储在一个变量以提高性能(至少我想这可以提高性能:))

PS:我是在Linux上,这代码去我~/.bashrc文件 - 如果你是在Mac OS X,那么我想你应该把它添加到.zshrc.profile

编辑: 正如评论所指出的@Aaron,该.zshrc文件从zsh外壳使用 - 所以,如果你不使用(如果你不知道,那么最有可能的,你正在使用bash代替),该代码应该去你的.bashrc文件。

在我的情况下的解决办法是:

  

上配置文件的权限应该是600 chmod 600 config

如在上述由评论提到  generalopinion

无需触摸的配置文件的内容。

我在Ubuntu 16.04的同一个问题:一些键则被永久添加,其他的我不得不在每一个会话中执行ssh-add。我发现,这是永久添加的密钥都位于~/.ssh私人和公共密钥和被遗忘在每个会话密钥曾在~/.ssh目录只有私钥。因此,解决方案很简单:你要复制的两个执行前私钥和公钥来~/.ssh ssh-add

在 Ubuntu 14.04(也许更早,也许仍然)上,你甚至不需要控制台:

  • 开始 seahorse 或者启动您在搜索“key”时发现的东西
  • 在那里创建一个 SSH 密钥(或导入一个)
    • 无需将密码留空
    • 您甚至可以将公钥推送到服务器(或更多)
  • 您最终将运行 ssh 代理并加载该密钥,但已锁定
  • 使用 ssh 将获取身份(即键)通过代理
  • 在会话期间首次使用时,将检查密码
    • 并且您可以选择在登录时自动解锁密钥
    • 这意味着登录身份验证将用于包装密钥的密码
  • 笔记:如果您想转发您的身份(即代理转发)调用您的 ssh-A 或将其设为默认值
    • 否则你无法使用该密钥进行身份验证 在您稍后登录到第三台计算机的计算机上

我运行Ubuntu的使用两个id_rsa关键的。 (一个个人的工作)。 SSH相加就记住一个密钥(个人的),每次忘公司之一。

检查出两个I之间的差别看到我的个人密钥有400项权利,同时该公司一个有600个权限。 (有U + W)。 除去公司关键用户写权限(U-W或设置为400)固定我的问题。 SSH-添加现在还记得两个键。

在“〜/ .bashrc中的”添加以下行来解决这个问题对我来说。我使用Ubuntu 14.04桌面。

eval `gnome-keyring-daemon --start`
USERNAME="reynold"
export SSH_AUTH_SOCK="$(ls /run/user/$(id -u $USERNAME)/keyring*/ssh|head -1)"
export SSH_AGENT_PID="$(pgrep gnome-keyring)"

非常简单^ _ ^两个步骤

1.yum安装钥匙扣

2.加代码下面的.bash_profile

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

这为我工作。

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

对于那些使用鱼壳可以使用下面的函数然后调用它在〜/的.config /鱼/ config.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

如果你想有,当你打开一个终端就可以使用 tuvistavie /的ssh-agent自动启动鱼的ssh-agent 来做到这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top