您启动并运行 keychain 后,一定要键入 keychain --help 以熟悉 keychain 所有的命令行选项。我们要特别看一下这个选项: -clear 选项。
还记得我在第 1 部分里阐释了使用不加密专用密钥是一种危险的做法,因为这种做法允许其它人盗用您的专用密钥不提供密码就可以从所有系统登录到您的远程帐户。唔,尽管 keychain 不易遭到这种滥用(只要您使用加密的专用密钥就行),但仍存在有可能可以利用的弱点,同 keychain 使得“钩住”长时间持续运行的 ssh-agent 进程如此容易这一事实直接相关。我想,如果闯入者以某种方式能想出我的密码或密码短语,还能登录进入我的本地系统,会发生什么事情呢?如果出于某种原因他们能以我的用户名登录,那么 keychain 就会立刻授权他们访问我的解密的专用密钥,使他们可以轻而易举的访问我的其它帐户。
现在,在继续下面的内容之前,让我们先客观的表述一下安全威胁。如果由于某种原因一些恶意的用户能以我的身份登录, keychain 确实会允许他们访问我的远程帐户。但,尽管如此,这位闯入者要偷到我的加密的专用密钥非常困难,因为它们仍旧在磁盘上保持着加密状态。而且,得到我的专用密钥访问权要求用户真的以我的身份 登录,不单单是阅读我的目录中的文件而已。因此,滥用 ssh-agent 是比只偷到一个不加密的专用密钥困难得多的一项任务,后者只需要闯入者通过某种手段获得我在 ~/.ssh 里的文件的访问权,而不管是否是以我的身份登录。不过,如果闯入者能够成功的以我的身份登录,通过使用我的加密专用密钥他们造成相当多的额外损害。所以,如果您刚好在您不频繁登录或没有对安全缺口进行密切监视的一台服务器上使用 keychain ,那么请您考虑使用 --clear 选项以提供附加的安全层。
--clear 选项允许您让 keychain 假定把每次以您的帐户的新登录都当作是可能的安全缺口,直到能证明并非如此。当您启动 keychain 时使用了 --clear 选项时,您登录的时候 keychain 会立即刷新 ssh-agent 的高速缓存里的所有专用密钥,此后才执行它的常规职责。这样,如果您是一位闯入者,则 keychain 会提示您输入密码短语而不会让您访问现有的高速缓存中的密钥集合。但是,虽然这样增强了安全性,却使情况有点更不方便,尤其好象完全是 ssh-agent 在运行,而 keychain 并没有运行。此处,情况常常是这样,一个人可以选择或者安全性更高,或更方便,但不能两者兼得。
尽管如此,使用带有 --clear 的 keychain 仍然比只用 ssh-agent 要好;请记住,当您使用 keychain --clear 时,您的 cron 作业和脚本仍然能建立无密码连接;这是因为专用密钥是在 登录时刷新,而不是在 退出时。由于从系统退出不会构成潜在的安全缺口,因而没有理由要 keychain 来刷新 ssh-agent 的密钥作为响应。因此,对于不频繁访问又需要偶而执行安全拷贝任务的服务器而言,比如,备份服务器、防火墙及路由器, --clear 选项是一个理想的选择。
既然 OpenSSH 密钥管理系列文章结束了,您就应当对 RSA 和 DSA 密钥非常熟悉,而且应当知道如何以一种方便又安全的方式使用。
“ 通用线程:OpenSSH 密钥管理,第 1 部分”( developerWorks,2001 年 7 月)涵盖了 RSA/DSA 认证。“ 通用线程:OpenSSH 密钥管理,第 2 部分”( developerWorks,2001 年 9 月)介绍了 ssh-agent 和 keychain。 “ 通用线程:OpenSSH 密钥管理,第 3 部分”( developerWorks,2001 年 9 月)介绍了 代理程序转发和 keychain 改进。
在 Gentoo Linux Keychain 页面上可以获得 keychain 的最新版本 。
请务必访问 OpenSSH 的开发主页,并查阅 OpenSSH 常见问题解答。
您可以从 Openbsd.org 下载最新的 OpenSSH 源码 tarball 和 RPM。
PuTTY是用于 Windows 机器上的一个出色的 ssh 客户程序。