OpenSSH原理及部署
程序员文章站
2022-07-04 14:43:11
...
OpenSSH是完全免费的 SSH 的实现。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 得出结论,既然持有匹配的专用密钥,就应当允许登录。
RSA部署
1.在SSH客户端,RSA 密钥对的生成
% ssh-keygen
注释: ~/.ssh/identity 和存储公用密钥的 ~/.ssh/identity.pub,并提供给 ssh-keygen 一个安全的密码短语。
2.在远程主机,RSA 公用密钥的安装
•copy 公用密钥到远程机器:
% scp ~/.ssh/identity.pub drobbins@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
如果刚才没有提示您输入密码短语,您可以试验一下以下几种情况。第一,尝试通过输入 ssh -1 drobbins@remotebox 登录。它会让 ssh 只应用 ssh 协议版本 1,如果出于某种原因远程系统缺省设置的是 DSA 认证的话,可能会要求这么做。如果不奏效的话,请确认您的 /etc/ssh/ssh_config 里没有写着这么一行 RSAAuthentication no。如果有的话,请您在前面加上一个“#”把这行注释掉。另外,还可以试着同 remotebox 的系统管理员联络,核实一下在他们那一端已经启用了 RSA 认证,并且 /etc/ssh/sshd_config 里的设置是正确的。
DSA部署
1.密钥的生成
ssh 协议的版本 1 使用的是 RSA 密钥,而 DSA 密钥却用于协议级 2,这是 ssh 协议的最新版本。
ssh-keygen -t dsa
缺省的 ~/.ssh/id_dsa 和 ~/.ssh/id_dsa.pub
2.DSA 公用密钥的安装
把 ~/.ssh/id_dsa.pub 文件拷贝到 remotebox,然后把它附加到 remotebox 上的 ~/.ssh/authorized_keys2 文件
Reference:
http://www.ibm.com/developerworks/cn/linux/security/openssh/part1/index.html
http://www.ibm.com/developerworks/cn/linux/security/openssh/part2/index.html
上一篇: android上的MD5和RSA的加解密
下一篇: ssh 免密码登录