千家信息网

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

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,[原贴]http://weblog.kreny.com/archives/2005/10/rsadsa_authenti.html [作者]: kreny一直想把自己的服务器的 SSH 认证的模式从用
千家信息网最后更新 2026年11月01日在 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

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


认证 服务器 服务 密钥 文件 生成 密码 方法 模式 过程 内容 命令 文章 时候 用户 成公 上生 参考 测试 输入 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 广州为想互联网科技有限公司 互联网扶贫科技 互联网与新科技 上海致骋互联网科技 深圳互联网科技怎么样 北京三清互联网科技 荆州市昕露互联网络科技有限公司 西安小鹰速贷互联网科技有限公司 群盈汇互联网科技有限公司 互联网方面的科技前沿 广东工业互联网大赛深圳学泰科技 皮皮虾互联网科技有限公司 下一代互联网重大应用科技园 工业互联网科技创业 普陀区互联网教育科技管理办法 亚光科技低轨卫星互联网 重庆科技产业互联网有哪些 互联网科技创业计划的风险分析 银川新华互联网科技学校招聘 花魁咖啡 互联网金融科技 美国互联网科技 长亮科技 互联网金融 互联网科技公司需要的职位 世界互联网科技公司市值排名 银川新华互联网科技学校联系电话 互联网时代的科技公司 珠海东科互联网科技有限公司 江苏互联网智能科技产品出厂价
0