Chinaunix首页 | 论坛 | 博客
  • 博客访问: 779562
  • 博文数量: 265
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1985
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-13 12:33
文章分类

全部博文(265)

文章存档

2011年(1)

2010年(66)

2009年(198)

我的朋友

分类: LINUX

2010-06-07 17:46:56

在这个例子中,我们将在两台机器 (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.

阅读(1433) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~