现在的位置: 首页 > 综合 > 正文

怎样配置 DSA 公钥认证的 SSH

2012年12月29日 ⁄ 综合 ⁄ 共 3128字 ⁄ 字号 评论关闭

在这个例子中,我们将在两台机器(Machine A和Machine B)上配置SSH2的DSA共钥认证.

当配置完成以后,我们可以从Machine A通过SSH2登陆到Machine B上,而不需要输入密码.我们也可以配置为没有passphrase的(记住:此方法不推荐). DSA公钥认证只是针对一个主机和一个用户的,并不是针对整个系统.此文章假定你已经在两台机器上安装运行了openssh, openssh-clients, openssh-server, openssh-askpass和openssh-askpass-gnome.

DSA公钥认证配置步骤:

生成DSA密钥对

1.在Machine A上输入以下命令,生成SSH2的DSA密钥对:

    ssh-keygen -t dsa

你将会看到类似下面的输出:

Generating public/private dsa key pair.
Enter file in which to save the key (/home/wolfpack/.ssh/id_dsa):
Created directory '/home/wolfpack/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/wolfpack/.ssh/id_dsa.
Your public key has been saved in /home/wolfpack/.ssh/id_dsa.pub.
The key fingerprint is:
79:2b:2a:be:06:a0:77:4a:7c:26:51:52:0f:f2:f7:9c wolfpack@jaws.example.com

使用默认的文件路径~/.ssh/id_dsa.输入不同于你帐号密码的passphrase,再输入一遍以便确认.

警告:当提示输入passphrase的时候,可以直接输入回车,不使用passphrase保护DSA密钥.但并不推荐这么做.无保护的DSA密钥对使得获得你帐号权限的入侵者能够进入到所有罗列在~/.ssh/id_dsa文件中的机器.

共钥被写入到~/.ssh/id_dsa.pub文件.私钥被写入到~/.ssh/id_dsa文件.切记不要把私钥给任何人.


2.改变~/.ssh文件的权限:

chmod 755 ~/.ssh

3.将Machine A文件~/.ssh/id_dsa.pub文件的内容拷贝到Machine B的~/.ssh/authorized_keys.如果Machine B上已经存在~/.ssh/authorized_keys文件,将~/.ssh/id_dsa.pub的内容追加到~/.ssh/authorized_keys. Machine B的~/.ssh/authorized_keys文件的内容如下所示:

wolfpack@flanders .ssh]$ cat ~/.ssh/authorized_keys
ssh-dss AAAAB3NzaC1kc3MAAACBAP7jri6wQtS97FWiqt2lp/Nv0zi1Suv/YTO8iRn/A5SsnC
hhozXtsiYl3ReycbQEaMs5RsDklBHfZJXsTOoMATX6ISmtEKrB81ex1RN5DP8+q1XnacAuNSBL
0agCiV0ru+5k/yfrEQisCSdFVzsFCA4OzhQEzOSMNAFrwtHbjq2HAAAAFQCssQ1b2BmrlRrhBe
Wzf7MF53yzvwAAAIEAj+DFA1RLajiRJZyVwyy2lXrjSa+sSsViyo1MCelKXf3Boj4uv3o24oss
Tcop/zxC0hxoSDd+bGfLYs/cASpZFCQoLKy4SX41Q6yQU1ra1+/j4MJqN5JwFel839HDiZ2IYY
Zif4UlSx2esEtDFlc5TLoRXmb5rb9kvcS+qbaQFScAAACBAKujycpeg0UIuQRXCtKVFLR6Rl2w
4Q39RGmuoKUl6Ki9ZdiJxOmUncAXOfRS5S7swwDJKaV2RmtD4LSGNV3jbrDGGtiLmBukbOdPG0
nnUzI7SrTg2DwSD333d85tpNBL1h/wWMb2e+UgEm0jjyB0asM/jj0dZkOJhL9agLZwGKRm
wolfpack@jaws.example.com

4.改变Machine B上authorized_keys文件的权限:

chmod 600 ~/.ssh/authorized_keys

现在,当你连接Machine B,系统仍旧让你输入DSA密钥文件的passphrase,除非你在创建DSA密钥对的时候没有输入passphrase,或者你完成以下几步操作:


在GNOME下设置ssh-agent

如果你在GNOME运行环境下,执行以下几步配置ssh-agent. ssh-agent工具用户保存你的DSA密钥passphrase以便每次ssh或者scp到Machine B的时候. 当你登陆GNOME, openssh-askpass-gnome提示输入passphrase并保存, 直到你退出GNOME. 在该GNOME session中,当ssh或者scp连接到Machine B时,系统将不再要求你输入passphrase.

在GNOME session中保存passphrase操作步骤:

1.选择Main Menu Button(在Panel上) => Preferences => More Preferences => Sessions, 点击 Startup Programs 标签. 点击 Add 并且在Startup Command 文本框中输入 /usr/bin/ssh-add. 设定一个低于任何一个已经存在的命令的优先级数字,以保证它最后被执行. 一个好的ssh-add优先级数字为70或者70以上. 优先级数字越大, 优先级别越低. 如果有其他的程序, 这个程序(ssh-add)应该是最低的优先级. 点击 Close 退出.

2.重新登陆GNOME, 也就是重启X. GNOME起动后,出现一个对话框要求你输入passphrase(s). 如果你已经配置了DSA和RSA密钥对, 系统将提示你都输入. 以后,使用ssh, scp, 或者sftp都不再要求你输入密码了.


非X环境下配置ssh-agent

如果没有运行X,则按照以下步骤配置ssh-agent. 如果GNOME在运行但是你不想在你登陆的时候提示输入passphrase, 以下过程将在终端窗口,例如XTerm上操作. 如果你运行的X 不是GNOME,以下操作将在终端窗口上操作. 然而,你的passphrase仅被该终端窗口记住,而不是全局设定.

1.在shell提示符下输入以下命令:

exec /usr/bin/ssh-agent $SHELL

2.输入命令:

ssh-add

输入你的passphrase(s). 如果你已经配置多对密钥,系统将提示你挨个输入.


3.退出系统后,passphrase(s)将会被释放. 当从虚拟控制台或者终端窗口登陆时,每次都必须执行这两条命令.


关于OpenSSH的更多资料,请参考RHEL3的 System Administration Guide 或者 Red Hat Linux / Red Hat Enterprise Linux 的 Customization Guide早期版本. 关于SSH 协议的更多信息,请参考 Red Hat Linux / Red Hat Enterprise Linux的 Reference Guide.
 

抱歉!评论已关闭.