网上关于ssh证书登录(无密码登录)的文章重复率太高了,尤其CA签证的方式, 弄的很多人迷迷糊糊的, 其实CA签证这种方式99%的人根本用不到。
而Linux SSH 证书登录非常简单,首先生成密钥对(证书),然后把公钥放到openssh配置文件里, 完事。
具体操作如下:
第一步:生成证书(密钥对),导出公钥
采用Putty 、Bivise SSH Client 、或者其他你常用的工具都可以,这里以Bitvise SSH Client 为例:
- 打开Bitvise SSH Client , 点击 [Client key manager] 进入客户端证书管理页面
- 在管理页面点击 [Generate New], 进入生成新的证书页面
- 在 生成证书页面,选择密钥长度,并输入证书密码
- 点击生成证书。 此时就就创建了一份新的证书,包含私钥和公钥。
生成证书图示步骤如下:

bitvise-ssh-client-cert
现在有了证书,接下来把公钥导出来,粘贴到服务器上就可以使用了。
导出步骤如下:
- 选择刚才生成的证书
- 点击[Export] 导出按钮
- 选择导出公钥,格式选openssh 格式。
- 点击导出按钮,即可拿到公钥。

bitvise-ssh-client-export
现在得到了导出的公钥,打开后内容如下,全选复制这串公钥。注意,这是一行字符串,没有换行。
第二步:把公钥粘贴到服务器上。
打开openssh的配置文件 /etc/ssh/sshd_config 。
- 开启证书认证
- 开启证书位置
- 禁止空密码
- 等证书验证没问题后,禁用密码登录,防止穷举。
这几步默认的配置文件里都有,只需要取消注释(把开头的井号取消掉)即可,内容如下:
# 公钥认证,开启 PubkeyAuthentication yes # 认证文件位置,取消井号注释,开启 AuthorizedKeysFile .ssh/authorized_keys # 空密码不允许登录 PermitEmptyPasswords no # 密码认证不允许,等证书验证没问题后再禁用密码登录。 PasswordAuthentication no
然后 打开用户家目录下的 【~/.ssh/authorized_keys】 文件,把刚才复制的公钥粘贴进去。 有多人使用的话,一个公钥一行。
qgbf@rangotec.com $ vi ~/.ssh/authorized_keys
第三步:验证证书登录是否正常
- 认证方式选择公钥认证
- Client key 选择刚才生成的证书文件
- PassPhrase 输入生成证书时,填写的密码
- 点击登录,当提示 Authentication completed 时,认证完成。
现在测试证书认证通过了,就可以把第二步里的密码认证关闭了。这样服务器只能用证书登录,当有人尝试用密码登录时,会报【密码认证失败,还可以尝试公钥登录】的错误。
09:41:58.057 Connection disconnected on user's request. 09:41:58.057 The SSH connection has been terminated. 09:41:59.136 Started a new SSH connection. 09:41:59.147 Connecting to SSH server 39.107.69.xxx:22. 09:41:59.165 Connection established. 09:41:59.199 Server version: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.4 09:41:59.199 First key exchange started. Cryptographic provider: Windows CNG (x86) with additions 09:41:59.264 Received host key from the server. Algorithm: RSA/sha2-512, size: 3072 bits, SHA-256 fingerprint: O0LmhrempX1F/lFz5Jt2bQ5I4gfrC9m8JhEU2aTC4SI. 09:41:59.281 First key exchange completed using Curve25519. Connection encryption and integrity: chacha20-poly1305, compression: none. 09:41:59.293 Attempting password authentication. 09:41:59.326 Authentication failed. Remaining authentication methods: 'publickey'. 09:42:00.774 Authentication aborted on user's request. 09:42:00.802 The SSH connection has been terminated.
相关文章:
- Linux SSH 仅允许指定用户远程登录 可以与本文的证书搭配使用,如:限制某用户只能用证书登录。
- 自建 NAS, 系统安全防护配置(一) 其中限制用户登录的操作,可参考本文步骤。
文章评论