手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

OpenSSH 密钥管理,第 1 部分

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!


ssh 的研发者们当然知道专用密钥的重要性,而且他们已在 ssh 和 ssh-keygen 里加入了一些防范措施,以防止我们的专用密钥被滥用。首先,ssh 被配置成了假如我们的密钥的文档权限允许除我们之外的任何人读取密钥,就打印出一条大大的警告消息。其次,在我们用 ssh-keygen 创建公用/专用密钥对的时候,ssh-keygen 会需要我们输入一个密码短语。假如我们输入了密码短语,ssh-keygen 就会用该密码短语加密我们的专用密钥,这样,即使专用密钥被盗,对于那些碰巧不知道密码短语的人而言,这把专用密钥是毫无用处的。具备了这一知识后,让我们看一下如何配置 ssh 以应用 RSA 和 DSA 认证协议。

ssh-keygen 细探
配置 RSA 认证的第一步从生成一对公用/专用密钥对开始。RSA 认证是 ssh 密钥认证的最初形式,因此 RSA 应该能够用于 OpenSSH 的任何版本,尽管这样,我还是推荐您安装可用的最近版本,在我写这篇文章的时候是 openssh-2.9_p2。生成一对 RSA 密钥的方法如下:

% ssh-keygen
Generating public/private rsa1 key pair.
Enter file in which to save the key (/home/drobbins/.ssh/identity): (hit enter)
Enter passphrase (empty for no passphrase): (enter a passphrase)
Enter same passphrase again: (enter it again)
Your identification has been saved in /home/drobbins/.ssh/identity.
Your public key has been saved in /home/drobbins/.ssh/identity.pub.
The key fingerprint is:
a4:e7:f2:39:a7:eb:fd:f8:39:f1:f1:7b:fe:48:a1:09 drobbins@localbox

当 ssh-keygen 需要输入存放密钥的缺省位置时,我们敲回车键接受缺省的 /home/drobbins/.ssh/identity。ssh-keygen 将把专用密钥保存在此路径中,公用密钥就存在紧临他的一个叫做 identity.pub 的文档里。

还要请您注意一下 ssh-keygen 还提示过我们输入密码短语。当时我们输入了一个好的密码短语(七位或更多位难以预测的字符)。然后 ssh-keygen 用这个密码短语加密了我们的专用密钥(~/.ssh/identity),以使我们的专用密钥对于那些不知道这个密码短语的人将变得毫无用处。

追求快速的折衷方案
当我们指定密码短语时,虽然这使得 ssh-keygen 保护我们的专用密钥以防误用,但是也带来了一点小小的不便。现在,每当我们试图用 ssh 连接到 drobbins@remotebox 帐户时,ssh 都会提示我们输入该密码短语以便他能对我们的专用密钥进行解密,并使用我们的专用密钥进行 RSA 认证。此外,我们输入的不是 remotebox 上 drobbins 帐户的密码,而是在本地机器上对专用密钥进行解密所需要的密码短语。一旦我们的专用密钥被解密,我们的 ssh 客户程式就会处理其余的事情。虽然使用我们的远程密码和使用 RSA 密码短语的机制完全不同,但实际上还是会提示我们输入一个“保密的短语”给 ssh。

# ssh drobbins@remotebox
Enter passphrase for key '/home/drobbins/.ssh/identity': (enter passphrase)
Last login: Thu Jun 28 20:28:47 2001 from localbox.gentoo.org

Welcome to remotebox!
%

这里就是人们经常会被误导而导致追求快速的折衷方案的地方。有很多时候,仅仅是为了不必输入密码,人们就会创建不加密的专用密钥。那样的话,他们只要输入 ssh 命令,立即就会通过 RSA(或是 DSA)认证并登录。

# ssh drobbins@remotebox
Last login: Thu Jun 28 20:28:47 2001 from localbox.gentoo.org
Welcome to remotebox!

%

然而,尽管这样很方便,但是在还没有完全理解这种方法对安全性的影响时,您不应该使用。假如有人在某一时刻闯入了 localbox,一把不加密的专用密钥使得他们也自动有权访问 remotebox 连同其他任何用这把公用密钥配置过的系统。

我知道您在想些什么。无密码认证,虽然有点冒险,可看起来的确很诱人。我完全同意。但是, 更有更好的办法!请相信我,我将向您展示如何既能够享受到无密码认证的好处,又不必牺牲专用密钥的安全性。在我的下一篇文章里,我还将向您展示如何熟练的使用 ssh-agent(正是他最先使得安全无密码认证成为可能)。现在,让我们通过配置 RSA 和 DSA 认证为使用 ssh-agent 做好准备。下面是逐步的指导。

RSA 密钥对的生成
要配置 RSA 认证,我们需要执行生成公用/专用密钥对的一次性步骤。我们的输入如下:

% ssh-keygen

出现提示时,请接受缺省的密钥位置(典型的情况下是 ~/.ssh/identity 和存储公用密钥的 ~/.ssh/identity.pub),并提供给 ssh-keygen 一个安全的密码短语。一旦 ssh-keygen 完成,您将会得到一把公用密钥和一把用密码短语加密的专用密钥。

RSA 公用密钥的安装
接下来,我们需要把正在运行 sshd 的远程系统配置成使用我们的公用 RSA 密钥进行认证。典型情况下,我们通过象下面这样把公用密钥拷贝到远程系统完成这一步:

% scp ~/.ssh/identity.pub drobbins@remotebox:

由于 RSA 认证还没有完全配置好,所以会提示我们输入 remotebox 上的密码。请您照做。然后,登录到 remotebox 并把公用密钥附加到文档 ~/.ssh/authorized_keys 上,如下所示:

% ssh drobbins@remotebox
drobbins@remotebox's password: (enter password)
Last login: Thu Jun 28 20:28:47 2001 from localbox.gentoo.org

Welcome to remotebox!

% cat identity.pub >> ~/.ssh/authorized_keys
% exit

现在,配置过 RSA 认证以后,当我们试图使用 ssh 连接到 remotebox 时,应该会提示我们输入 RSA 密码短语(而不是我们的密码)。

% ssh drobbins@remotebox
Enter passphrase for key '/home/drobbins/.ssh/identity':

好哇,RSA 认证的配置完成了!假如刚才没有提示您输入密码短语,您能够试验一下以下几种情况。第一,尝试通过输入 ssh -1 drobbins@remotebox 登录。他会让 ssh 只应用 ssh 协议版本 1,假如出于某种原因远程系统缺省配置的是 DSA 认证的话,可能会需要这么做。假如不奏效的话,请确认您的 /etc/ssh/ssh_config 里没有写着这么一行 RSAAuthentication no。假如有的话,请您在前面加上一个“#”把这行注释掉。另外,还能够试着同 remotebox 的系统管理员联络,核实一下在他们那一端已启用了 RSA 认证,并且 /etc/ssh/sshd_config 里的配置是正确的。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!