Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15340244
  • 博文数量: 2005
  • 博客积分: 11986
  • 博客等级: 上将
  • 技术积分: 22535
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-17 13:56
文章分类

全部博文(2005)

文章存档

2014年(2)

2013年(2)

2012年(16)

2011年(66)

2010年(368)

2009年(743)

2008年(491)

2007年(317)

分类: 系统运维

2008-01-18 20:25:26

OpenSSH 特性之一是它能够使用基于一对互补的数字式密钥的 RSA 和 DSA 认证协议来认证用户。
RSA 和 DSA 认证承诺不必提供密码就能够同远程系统建立连接,这是它的主要魅力之一。
虽然这非常吸引人,但是 OpenSSH 的新用户们常常以一种快速却不完善的方式配置 RSA/DSA,
结果虽然实现了无密码登录,却也在此过程中开了一个很大的安全漏洞

RSA/DSA 密钥的工作原理
1.生成一对密钥,一把专用密钥和一把公用密钥,公用密钥用于对消息进行加密,只有拥有专用密钥的人才能对该消息进行解密。
公用密钥只能用于加密,而专用密钥只能用于对由匹配的公用密钥编码的消息进行解密。

2.公用密钥拷贝到 remotebox,把它放在一个专门的文件(~/.ssh/authorized_keys)里

3.ssh 告诉 remotebox 的 sshd 它想使用 RSA 认证协议。Remotebox 的 sshd 会生成一个随机数,
并用公用密钥对这个随机数进行加密。然后, sshd 把加密了的随机数发回给正在 localbox 上运行的 ssh。
接下来, ssh 用专用密钥对这个随机数进行解密后,再把它发回给 remotebox。 sshd 得出结论,既然持有匹配的专用密钥,
就应当允许登录

注意事项
ssh 被设置成了文件权限允许除用户之外的任何人读取密钥,就打印出一条大大的警告消息。
其次,用 ssh-keygen 创建公用/专用密钥对的时候,ssh-keygen 会要求输入一个密码短语。

错误的做法
密码短语设置为空,以实现无密码认证。

操作步骤:
1.RSA 密钥对的生成
% ssh-keygen

2.RSA 公用密钥的安装
% scp ~/.ssh/identity.pub
% cat identity.pub >> ~/.ssh/authorized_keys
% exit

3.错误排除:
第一,尝试通过输入 ssh -1 登录。它会让 ssh 只应用 ssh 协议版本 1
第二,确认 /etc/ssh/ssh_config 里没有写着这么一行 RSAAuthentication no。如果有的话,请在前面加上一个“#”把这行注释掉

DSA 密钥的生成
ssh 协议的版本 1 使用的是 RSA 密钥,而 DSA 密钥却用于协议级 2。
% ssh-keygen -t dsa

DSA 公用密钥的安装
 ~/.ssh/authorized_keys2

介绍  ssh-agent
不同于 ssh,ssh-agent 是个长时间持续运行的守护进程(daemon),设计它的唯一目的就是对解密的专用密钥进行高速缓存。
对于 ssh-agent,您只要使用 ssh-add 把专用密钥添加到 ssh-agent 的高速缓存中。这是个一次性过程;用过 ssh-add 之后,ssh 将从 ssh-agent 获取您的专用密钥,而不会提示要密码短语来烦您了。

使用 ssh-agent
% ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-XX4LkMJS/agent.26916; export SSH_AUTH_SOCK;
SSH_AGENT_PID=26917; export SSH_AGENT_PID;
echo Agent pid 26917;

使之确定,我们可以象下面这样调用 ssh-agent:
eval `ssh-agent`

使用 ssh-add
把 ~/.ssh/identity 专用 RSA 密钥添加到 ssh-agent 的高速缓存中:
# ssh-add ~/.ssh/identity

ssh-agent 的不足之处

首先,~/.bash_profile 中的 eval `ssh-agent` 使每次登录会话都会启动一个新的 ssh-agent 副本;
每次新打开控制台都需要键入密码短语。
同 cron 作业不兼容。

解决方法
使用keychain

http://www-900.ibm.com/developerWorks/cn/linux/security/openssh/part1/index.shtml

http://www-900.ibm.com/developerWorks/cn/linux/security/openssh/part2/index.shtml

http://www-900.ibm.com/developerWorks/cn/linux/security/openssh/part3/index.shtml

阅读(4190) | 评论(0) | 转发(0) |
0

上一篇:数字签名原理

下一篇:数字认证的原理

给主人留下些什么吧!~~