千家信息网

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

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,[原贴]http://weblog.kreny.com/archives/2005/10/rsadsa_authenti.html [作者]: kreny一直想把自己的服务器的 SSH 认证的模式从用
千家信息网最后更新 2025年12月02日在 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安全错误 数据库的锁怎样保障安全 画网络安全人人有责手抄报 无锡联想服务器维修价格 我的世界基因服服务器 自然资源清查数据库验收 个人公众号可以挂数据库吗 用数据库查询每个部门的所有信息 深圳联发科网络技术 ccwow服务器费用 免费ftp服务器安全 海南综合软件开发厂家报价 网络安全分析化学实验报告 深圳市次元波动网络技术有限公司 网络安全素质教育证书有用吗 杨凌IOS软件开发招聘 数据库技术与应用免费下载 服务器主板电源如何连接 软件开发中需求结束一般在哪 阿里云服务器远程桌面 哪种编程语言数据库用得多 微信小程序请求宝塔数据库 思禾互联网科技 软件开发者级别 u点家庭服务器管理wifi 美国服务器租用光算云在哪儿 互联网金融是科技金融吗 特斯拉上海数据库已经建好了吗 服务器账期 互联网科技2019暑期vr 网络安全防护证书样本 辽宁机架式服务器批发厂家
0