使用ssh-agent

简介: sh-agent是一种控制用来保存公钥身份验证所使用的私钥的程序。ssh-agent在X会话或登录会话之初启动,所有其他窗口或程序则以客户端程序的身份启动并加入到ssh-agent程序中。
sh-agent是一种控制用来保存公钥身份验证所使用的私钥的程序。ssh-agent在X会话或登录会话之初启动,所有其他窗口或程序则以客户端程序的身份启动并加入到ssh-agent程序中。通过使用环境变量,可定位代理并在登录到其他使用ssh机器上时使用代理自动进行身份验证。 

其实ssh-agent就是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程。通过使用ssh-agent就可以很方便的在不的主机间进行漫游了,假如我们手头有三台server:host1、host2、host3且每台server上到保存了本机(supersun.biz)的公钥,因此我可以通过公钥认证登录到每台主机:

[root@supersun.biz ~]#ssh host1
Last login: Thu Oct 18 13:56:08 2007 from supersun
[root@host1 root]# 

[root@supersun.biz ~]#ssh host2
Last login: Fri Oct 12 11:14:44 2007 from supersun
[root@host2 root]# 

[root@supersun.biz ~]#ssh host3
Last login: Sat Sep 29 10:21:32 2007 from supersun
[root@host3 root]# 

但是这三台server之间并没有并没有保存彼此的公钥,而且我也不可能将自己的私钥存放到server上(不安全),因此彼此之间没有公钥进 行认证(可以密码认证,但是这样慢,经常输密码,烦且密码太多容易忘)。但是如果我们启用ssh-agent,问题就可以迎刃而解了。 

启用ssh-agent:

[root@supersun.biz ~]#eval `ssh-agent `
Agent pid 3526

添加私钥:

[root@supersun.biz ~]#ssh-add
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)

编缉/etc/ssh/ssh_config文件:ForwardAgent yes

让ssh-agent能转发,这样就可以这样登陆了:supersun.biz---->host1---->host2,到此请注意,如果host1上没有设定转发的话就登不了host3了,设定了转发后可以进一步跳到rs3上了。 

[root@supersun.biz ~]#ssh host1
Last login: Thu Oct 18 16:21:29 2007 from supersun
[root@host1 root]# vi /etc/ssh/ssh_config 
[root@host1 root]# ssh host2
Last login: Thu Oct 18 16:20:28 2007 from supersun
[root@host2 root]# ssh host3
Last login: Thu Oct 18 16:10:39 2007 from supersun
[root@host3 root]# 

到这里基本上已经大功告成了,还有一个小问题那就是总不能每次都手动运行ssh-agent吧!最省时的方法就是将它写到profile中去:

为了不把profile搞乱,我在在/etc/profile.d下建一个ssh-agent.sh文件:

[root@supersun.biz ~]#cat /etc/profile.d/ssh-agent.sh 
#!/bin/sh

if [ -f ~/.agent.env ]; then
. ~/.agent.env >/dev/null
if ! kill -0 $SSH_AGENT_PID >/dev/null 2>&1; then
echo "Stale agent file found. Spawning new agent..."
eval `ssh-agent |tee ~/.agent.env`
ssh-add
fi
else
echo "Starting ssh-agent..."
eval `ssh-agent |tee ~/.agent.env`
ssh-add
fi

这样就不会生成太多的ssh-agent程序了,而且支持GUI环境。当我打开一个终端的话:

Stale agent file found. Spawning new agent...
Agent pid 2543
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
[root@supersun.biz ~]#

添加了新的密钥。
目录
相关文章
|
Web App开发 Linux Shell
ssh-agent+keychain + script
使用ssh-agent和keychain来简化ssh登录 转载:http://blog.sina.com.cn/s/blog_3f3422fd0100002i.
1240 0
|
Shell 网络安全 数据安全/隐私保护
使用 ssh-agent,实现多台机器 ssh 免密码登陆
使用 ssh-agent,实现多台机器 ssh 免密码登陆
599 0
|
网络安全
将ssh key添加到ssh-agent使用命令ssh-add ~/.ssh/id_rsa结果报错
将ssh key添加到ssh-agent使用命令ssh-add ~/.ssh/id_rsa结果报错 Error connecting to agent: No such file or directory 开启ssh-agent:ssh-agent 报错: unable to start ssh-...
8755 0
|
存储 网络安全 开发工具
Git如何生成多个ssh key添加到ssh-agent管理项目
生成新的ssh密钥 ssh-keygen -t rsa -b 4096 -C "your@example.com" 不要一直回车键,输入新的名称 id_rsa_new Enter a file in which to save the key (/Users/you/.
2748 0
Git如何生成多个ssh key添加到ssh-agent管理项目
|
Shell 网络安全 数据安全/隐私保护
|
网络安全
|
网络安全 Linux 数据安全/隐私保护
不能成功配置ssh信任,提示Agent admitted failure to sign using the key.
不能成功配置ssh信任,提示Agent admitted failure to sign using the key. 问题现象:      做完信任之后要需要输密码: [grid@db01 .
1471 0
|
网络安全 数据安全/隐私保护
SSH无密码登陆Agent admitted failure to sign using the key
A :CentOS_Master B:Slave_1 C:Slave_2 普通用户hxsyl 1.现在A 上 ssh-keygen -t rsa 一路回车,不需要输入密码 执行该操作将在/home/hxsyl/.
931 0