- 论坛徽章:
- 0
|
操作环境:
FreeBSD 7.0 release
script : csh
假设密钥位置: /root/.ssh/id_dsa
平常登陆的方式应该是如下,如有密钥密码则要输入:
# ssh -p ${port} -i /root/.ssh/id_dsa ${user}@${ipaddr}
个把主机还好,如是管理大量主机时用这种方式就繁琐了。所以通过ssh-agent或keychain方式来缓存密钥在管理上可提高效率。
1. 通过ssh-agent 和 ssh-add来建立密钥缓存
先启用ssh-agent守护进程, 导入相关环境变量
# ssh-agent
setenv SSH_AUTH_SOCK /tmp/ssh-6J4OQDvJO8/agent.74703;
setenv SSH_AGENT_PID 74704;
echo Agent pid 74704;
# setenv SSH_AUTH_SOCK /tmp/ssh-6J4OQDvJO8/agent.747043;
# setenv SSH_AGENT_PID 74704;
守护进程建立了,下面就可以加载密钥了, 如有密钥密码铡会提示输入。有多个密钥则一个个的加进缓存。
# ssh-add /root/.ssh/id_dsa
密钥加载完成。修改ssh_config的ForwardAgent,尝试登陆远程主机且不用再加上密钥和输入密钥密码。
# sed -i.bak -e 's/\(ForwardAgent \)no/\1yes/' /etc/ssh/ssh_config
# ssh -p ${port} ${user}@${ipaddr}
关闭ssh-agent进程:
# ssh-agent -k
2. 通过keychain简化ssh-agent和ssh-add步骤
keychain的安装
# cd /usr/ports/secure/keychain
# make install clean && rehash
通过keychain,可自动调用ssh-agent 守护进程和加载密钥
# keychain /root/.ssh/id_dsa
# source ~/.keychain/xxxxxx_csh //xxxxx是你的主机名或ip地址.
两步完成。修改ssh_config的ForwardAgent后就可以登陆远程主机了。
3. 登陆shell时如ssh-agent进程还存在,则自动进行初始化
sh或bash在.bashrc下加入如下行:
if [ -n `ps aux | grep ssh-agent | grep -v grep | awk '{print $2}'` ]
then
if [ -z ${SSH_AGENT_PID} ];then
. ~/.keychain/`hostname`-sh
fi
fi
csh或tcsh则在.cshrc下加入如下行:
if ( `ps aux | grep ssh-agent | grep -v grep | awk '{print $2}'` > 1 ) then
if ( ! $?SSH_AGENT_PID ) then
source ~/.keychain/`hostname`-csh
endif
endif
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/12909/showart_2041319.html |
|