如何在 Ubuntu 上使用 ssh-add 永久添加私钥?[关闭]
题
我有一个受密码保护的私钥,可以通过 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 来做到这一点。