- 论坛徽章:
- 0
|
忽然看到有关无口令使用ssh的帖子,在论坛里按主题搜索了一把,居然没有找到关于keychain的介绍。
正好昨天刚帮一个用户设置了keychain,就写一篇简单的介绍,争取能算个原创。 8-)
1.什么是keychain ?
简单说,keychain就是一个脚本,可以自动的帮你找到你上回登陆时候启动的ssh-agent进程,从而可以继续使用已经存在该agent里的key,去登陆其他的机器。
多说一句ssh-agent就是存你passphrase的后台进程。
如果你使用有passphrase的key,自然就不会用到ssh-agent,也就不会用到keychain了。
如果你想要深入了解keychain的工作原理,你可以找找ssh-agent的文档和keychain的文档看看,如果你只想快速的达到无需口令的使用ssh,那么就直接装上keychain,用就是了。
keychain的主页:
http://www.gentoo.org/proj/en/keychain/
2.怎样安装并配置keychain ?
2.1
http://dev.gentoo.org/~agriffis/keychain/
下载最新的keychain-2.6.1.tar.bz2
解出keychain
只需要keychain.
- rzhang@beedal01-/disk1/rzhang/bin> tar tvf ../keychain-2.6.1.tar
- drwxr-xr-x root/root 0 2005-10-11 03:40:23 keychain-2.6.1/
- -rw-r--r-- root/root 12995 2005-10-11 03:40:23 keychain-2.6.1/keychain.1
- -rw-r--r-- root/root 17227 2005-10-11 03:40:23 keychain-2.6.1/ChangeLog
- -rw-r--r-- root/root 787 2005-10-11 03:40:23 keychain-2.6.1/README
- -rwxr-xr-x root/root 50897 2005-10-11 03:40:23 keychain-2.6.1/keychain
- -rw-r--r-- root/root 1240 2005-10-11 03:40:23 keychain-2.6.1/keychain.spec
- -rw-r--r-- root/root 18009 2005-10-11 03:40:23 keychain-2.6.1/COPYING
- -rwxr-xr-x root/root 7924 2005-10-11 03:40:23 keychain-2.6.1/keychain.pod
- rzhang@beedal01-/disk1/rzhang/bin>
复制代码
2.2
生成你的密钥,设置passphrase,并记住你的passphrase.
把新的公钥加到authorized_keys里
- rzhang@beedal01-/disk1/rzhang/.ssh> ssh-keygen -t dsa -b 1024 -f ./id_dsa
- Generating public/private dsa key pair.
- Enter passphrase (empty for no passphrase):
- Enter same passphrase again:
- Your identification has been saved in ./id_dsa.
- Your public key has been saved in ./id_dsa.pub.
- The key fingerprint is:
- 5d:0b:88:01:7e:9c:09:28:86:83:96:c8:23:09:b2:11 rzhang@beedal01
- rzhang@beedal01-/disk1/rzhang/.ssh>cat ./id_dsa.pub >> ~/.ssh/authorized_keys
复制代码
(我这里举的例子是用户有唯一的home dir,这样我只需要在一个地方安装并配置了keychain和ssh的key认证,就可以了
要是你的环境是在不同的home dir,那么就要在每个系统上安装一遍,并添加key到authorized_keys。而且启动脚本也要写在系统的profile 和login里了。)
到你的home dir.
mkdir dir
- cd ~/
- mkdir bin
- cp keychain ~/bin/
复制代码
add keychain to your startup scripts.make it work under all kinds of shell.
- echo "~/bin/keychain ~/.ssh/id_dsa" >> ~/.login
- echo "source ~/.keychain/`hostname`-csh" >> ~/.login
- echo "~/bin/keychain ~/.ssh/id_dsa" >> ~/.profile
- echo ". ~/.keychain/`hostname`-sh" >> ~/.profile
复制代码
现在你就已经设置好keychain了。
3.怎样使用keychain ?
当我从beedal01登陆到 pod这台机器:
keychain会自动在pod这台机器上检查是否有你的ssh-agent,如没有就启动一个,并自动添加你的key到agent,并提示你输入passphrase.
这样在pod这台机器上,就会有你的一个ssh-agnet一直在运行,并且存储了你的密钥在里面,只要pod没有重新启动,那么该agent就一直在后台。
从现在起你就可以从pod以你的用户ssh任何其他的机器了(直到pod重启,或agent死掉)。(前提是那台机器和你是同一个home dir)
当然登陆到新的机器后,那台机器又会提示你输入passphrase,以保存你的key在那台机器里。
- rzhang@beedal01-/disk1/rzhang/.ssh> ssh pod
- Enter passphrase for key '/disk1/rzhang/.ssh/id_dsa':
- Last login: Wed Dec 7 12:51:09 2005 from beedal01
- ...
- ...
- KeyChain 2.6.1; http://www.gentoo.org/proj/en/keychain/
- Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL
- * Found existing ssh-agent (3193)
- * Adding 1 ssh key(s)...
- Enter passphrase for /disk1/rzhang/.ssh/id_dsa:
- Identity added: /disk1/rzhang/.ssh/id_dsa (/disk1/rzhang/.ssh/id_dsa)
复制代码
当你下次登陆到pod的时候。
keychain就会自动去找,你是否有个agent在后台,如果有,就使用该agent.
自然就会变成这个样子。从而实现了passwordless.
- [rzhang@beedal01 ~]$ ssh pod
- Last login: Wed Dec 7 12:51:56 2005 from beedal01
- ...
- ...
- KeyChain 2.6.1; http://www.gentoo.org/proj/en/keychain/
- Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL
- * Found existing ssh-agent (3193)
- * Known ssh key: /disk1/rzhang/.ssh/id_dsa
复制代码
[ 本帖最后由 zhangr 于 2005-12-7 13:23 编辑 ] |
|