在Ubuntu上用ssh-add永久添加私钥
我有一个用密码保护的私钥,通过SSH访问服务器。
我有2个Linux(Ubuntu 10.04)机器和ssh-add命令的行为是不同的在他们两个。
在一台机器上,一旦我使用“ssh-add .ssh / identity”并input密码,密钥就会永久添加,即每次关机后重新login密钥。
另一方面,我每次login时都要添encryption钥。
据我所知,我在两个方面都做了同样的事情。 唯一的区别是,密钥是在永久添加的密钥上创build的。
有谁知道如何将其永久添加到另一台机器?
解决办法是强制密钥文件永久保存,方法是将它们添加到~/.ssh/config
文件中:
IdentityFile ~/.ssh/gitHubKey IdentityFile ~/.ssh/id_rsa_buhlServer
如果你想让计算机上的所有用户使用这个密钥,把这些行放到/etc/ssh/ssh_config
并把密钥放在一个可访问的文件夹中。
另外,如果你想设置一个主机的特定密钥,你可以在〜/ .ssh / config中执行以下命令:
Host github HostName github.com User git IdentityFile ~/.ssh/githubKey
你需要使用@github而不是@ github.com进行克隆,但是这样做的好处是只有这个密钥才能被使用。
这在Mac OS X Lion下没有回答我的问题。 我最后补充说:
ssh-add ~/.ssh/id_rsa &>/dev/null
到我的.zshrc(但.profile也可以),这似乎已经修复它。
(如这里所build议的: http : //geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/ )
我在Mac OSX(10.10)上使用-k选项解决了ssh-add的问题:
ssh-add -K ~/.ssh/your_private_key
只需添加钥匙串,如Ubuntu快速提示https://help.ubuntu.com/community/QuickTips
什么
而不是经常启动ssh-agent和ssh-add,可以使用钥匙串来pipe理你的ssh密钥。 要安装钥匙串,你可以点击这里,或者使用Synaptic从命令行执行这个任务或apt-get。
命令行
另一种安装文件的方法是打开terminal(应用程序 – >附件 – >terminal)并input:
sudo apt-get install keychain
编辑文件
然后,您应该将以下行添加到$ {HOME} /。bashrc或/etc/bash.bashrc中:
keychain id_rsa id_dsa . ~/.keychain/`uname -n`-sh
我尝试了@Aaron的解决scheme,这对我来说并不合适,因为每当我在terminal中打开一个新选项卡时,它都会重新添加我的密钥。 所以我修改了一下(请注意,我的大多数密钥也是密码保护的,所以我不能只是发送输出到/ 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
(列出所有已添加的键)的输出,如果没有find它,则将其添加到ssh-add
。
现在我第一次打开我的terminal,我被要求input私钥的密码,直到重新启动(或者注销 – 我没有检查)我的电脑之后,我才再次询问。
由于我有一堆密钥,我将ssh-add -l
的输出存储在一个variables中以提高性能(至less我猜测它提高了性能:))
PS:我在Linux上,这个代码到我的~/.bashrc
文件 – 如果你在Mac OS X上,那么我认为你应该把它添加到.zshrc
或.profile
编辑:正如@Aaron在评论中指出的,.zshrc文件是从zsh
shell中使用的 – 所以如果你不使用它(如果你不确定,那么最有可能的是,你使用的是bash
) ,这个代码应该去你的.bashrc
文件。
在我的情况下,解决scheme是:
configuration文件的权限应该是600.
chmod 600 config
正如上述通用观点中所提到的
不需要触摸configuration文件的内容。
在Ubuntu 14.04(也许更早,也许还是),你甚至不需要控制台:
- 启动
seahorse
或启动那个你发现寻找“钥匙”的东西 - 在那里创build一个SSH密钥(或者导入一个)
- 不需要把密码留空
- 它是提供给你甚至推公钥到服务器(或更多)
- 你将最终运行一个ssh-agent,并加载这个密钥,但是被locking
- 使用
ssh
将通过代理获取身份(即密钥) - 在会话第一次使用时,密码将被检查
- 而且您可以select在login时自动解锁密钥
- 这意味着loginvalidation将被用来包装密钥的密码
- 注意:如果你想转发你的身份(即代理转发),请用
-A
调用你的ssh
或者使其成为默认值- 否则,您将无法使用该密钥在稍后login到第三台机器的计算机上进行身份validation
很简单^ _ ^两个步骤
1.yum安装钥匙串
2.将以下代码添加到.bash_profile
/usr/bin/keychain $HOME/.ssh/id_dsa source $HOME/.keychain/$HOSTNAME-sh
在“〜/ .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)"
我使用两个id_rsa键运行Ubuntu。 (一个人工作)。 ssh-add会记住一个密钥(个人密钥),并且每次都忘记这个公司。
检查两者之间的差异,我看到我的个人密钥拥有400个权利,而公司拥有600个权限。 (有u + w)。 删除用户从公司密钥(uw或设置为400)写权利解决了我的问题。 ssh-add现在可以记住两个密钥。
这对我有效。
ssh-agent /bin/sh ssh-add /path/to/your/key