在 SSH 中使用 RSA 和 DSA 认证(详解)

[原贴]http://weblog.kreny.com/archives/2005/10/rsadsa_authenti.html  [作者]:kreny

一直想把自己的服务器的 SSH 认证的模式从用户名密码模式转换成 RSA 和 DSA 认证协议,借着OpenSSH 4.2的发布,今天写了一下配置过程并收集了一些关于 RSA 和 DSA 的参考文章。

思路整理:
一直没有理解公匙模式下的认证过程,这里总结一下公匙和秘匙的制作和安置方法。以下假设一台服务器Server和一台PC作为例子。
首先,并不是在服务器上生成公匙和秘匙。因为很多关于RSA 和 DSA 认证协议的文章都使用Linux服务器作为道具,自然也就使用诸如 ssh-keygen -t rsa 之类的命令,而使得我总是误认为要先在Linux服务器上先生成公匙和秘匙。而真正的安置方法是:
当从PC连接Server的时候,需要在PC上保存一对公匙和秘匙(这对公匙和秘匙可以用诸如PenguiNet之类的工具生成),而只要把生成的公匙传到Server上即可。而往往在Server上,公匙是被放在 ~/.ssh/authorized_keys 这个文件中。这个文件的设置可以在 /etc/ssh/sshd_config 中找到。

AuthorizedKeysFile .ssh/authorized_keys
那么当从一个Linux Client Server连接到另外一个Linux Server的时候,我们应该在 Linux Client Server 上生成一对秘匙(RSA时默认为 id_rsa 和 id_rsa.pub),保存在 ~/.ssh/ 中, 这个设置可以在  /etc/sshd/ssh_config  中设置:
# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
这样我们也可以更好地理解 ssh_config 和 sshd_config 的区别了。
openssh4.2.GIF

 

RAS/DSA认证安装过程(以 tenten 用户为例):  
( 以下测试在最新的OpenSSH 4.2 下通过,在 OpenSSH_3.9p1 下测试失败! )
[root@domain ~]$su - tenten
[tenten@domain ~]ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tenten/.ssh/id_rsa):[Enter]
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/tenten/.ssh/id_rsa.
Your public key has been saved in /home/tenten/.ssh/id_rsa.pub.
The key fingerprint is:
c7:93:83:c4:24:30:56:90:37:a0:eb:a7:5d:4c:8d:ea:1a: tenten@example.com

:::或者:::

[tenten@kdx ~]$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/tenten/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/tenten/.ssh/id_dsa.
Your public key has been saved in /home/tenten/.ssh/id_dsa.pub.
The key fingerprint is:
a2:be:16:2e:66:e4:69:68:a0:eb:a7:5d:4c:8d:ea:1a:da:54:35:55:32:8e:e2 tenten@example.com

查看生成的文件:
[tenten@kdx ~]$ ls /home/tenten/.ssh/ -la
total 28
drwx------ 2 tenten tenten 4096 Oct 11 16:09 .
drwx------ 3 tenten tenten 4096 Oct 9 16:50 ..
-rw------- 1 tenten tenten 736 Oct 11 16:09  id_dsa
-rw-r--r-- 1 tenten tenten 612 Oct 11 16:09  id_dsa.pub
-rw------- 1 tenten tenten 951 Oct 11 16:03  id_rsa
-rw-r--r-- 1 tenten tenten 232 Oct 11 16:03  id_rsa.pub
-rw-r--r-- 1 tenten tenten 667 Oct 9 16:48 known_hosts
设置 sshd_config 文件,去除密码认证
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
由于在 sshd_config 文件里面,我们设置了以下内容:
#AuthorizedKeysFile .ssh/authorized_keys
所以我们要把共匙重命名为 autherized_keys
[root@domain .ssh]# mv id_dsa.pub autherized_keys
所以最终服务器端 ~/.ssh/ 目录下的内容为(注意authorized_keys的权限为 644)
[tenten@domain .ssh]$ ls -la
total 12
drwx------ 2 tenten tenten 4096 Oct 11 19:57 .
drwx------ 3 tenten tenten 4096 Oct 11 18:50 ..
-rw-r--r-- 1 tenten tenten 232 Oct 11 19:46 authorized_keys

 

引申: 
在安装 openssh 的最后,输入 make install 命令后,会发现最后会生成 public/private key:
Generating public/private  rsa1 key pair.
Your identification has been saved in /usr/local/etc/ssh_host_key.
Your public key has been saved in /usr/local/etc/ssh_host_key.pub.
The key fingerprint is:
22:67:00:5f:82:87:ab:22:e7:8e:cd:bb:d2:07:98:57 root@example.com

Generating public/private dsa key pair.
Your identification has been saved in /usr/local/etc/ssh_host_dsa_key.
Your public key has been saved in /usr/local/etc/ssh_host_dsa_key.pub.
The key fingerprint is:
17:6c:d8:6f:31:db:bd:3c:66:81:86:12:13:a4:33:a3 root@example.com

Generating public/private rsa key pair.
Your identification has been saved in /usr/local/etc/ssh_host_rsa_key.
Your public key has been saved in /usr/local/etc/ssh_host_rsa_key.pub.
The key fingerprint is:
27:0e:16:41:f8:96:ed:93:b6:a8:61:74:fe:87:e2:91 root@example.com
/usr/local/sbin/sshd -t -f /usr/local/etc/sshd_config

 

参考文档:  
张微波:linux下SSH配合SecureCRT的密匙完美使用方法  
Daniel Robbins: 通用线程: OpenSSH 密钥管理,第 1 部分

OpenSSH 的 RSA 和 DSA 认证协议的基础是一对专门生成的密钥,分别叫做专用密钥和公用密钥。使用这些基于密钥的认证系统的优势在于:在许多情况下,有可能不必手工输入密码就能建立起安全的连接。


原链接:http://blog.csdn.net/scottsiu/article/details/1268371

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RSA(Rivest-Shamir-Adleman)和DSA(Digital Signature Algorithm)是两种常用的加密算法,用于加密和数字签名。 1. 加密算法: - RSA 是一种非对称加密算法,使用一对公钥和私钥。发送方使用接收方的公钥进行加密,接收方使用自己的私钥进行解密。 - DSA 是一种数字签名算法,使用一对公钥和私钥。发送方使用自己的私钥进行签名,接收方使用发送方的公钥进行验证。 2. 安全性: - RSA 基于大数分解难题(如质因数分解),其安全性基于大数的复杂计算。当选用足够大的密钥长度时,目前没有已知的有效攻击方法。 - DSA 基于离散对数问题,其安全性基于在有限域上的离散对数计算。同样,当密钥长度足够大时,DSA 也被认为是安全的。 3. 密钥长度: - RSA 密钥长度通常要比 DSA 密钥长度长,以达到相同的安全级别。通常建议使用 2048 位或更长的 RSA 密钥。 - DSA 密钥长度相对较短,通常建议使用 1024 位的 DSA 密钥。 4. 签名机制: - RSA 可用于加密和数字签名,RSA 签名使用私钥进行签名,而公钥用于验证签名。 - DSA 主要用于数字签名,使用私钥进行签名,而公钥用于验证签名。 总结: - RSA 是一种既可以用于加密也可以用于数字签名的非对称加密算法,而 DSA 主要用于数字签名。 - RSA 密钥长度通常比 DSA 密钥长度长,但相应地提供更高的安全性。 - 无论是 RSA 还是 DSA,密钥的安全性都依赖于其密钥长度的选择。较长的密钥长度通常提供更高的安全级别。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值