为 Linux 设置证书登录

发布于 2021-05-27· 默认分类·1677次浏览

测试环境

Debian 10

生成证书文件

# ssh-keygen --help 查看帮助信息
# [-t dsa | ecdsa | ed25519 | rsa] 指定证书类型
# [-C comment] 用于识别的备注
ssh-keygen -t ed25519 -C user@email.com
Generating public/private ed25519 key pair.
# 保存的文件
Enter file in which to save the key (/root/.ssh/id_ed25519):./example
# 证书密码
Enter passphrase (empty for no passphrase):
# 证书密码
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_ed25519.
Your public key has been saved in /root/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:2iorfNMvhA/vXxZPQifrqdKAANmQJfZbMIiGv9Wjp54 user@email.com
...

以上命令执行后,在指定的保存文件位置就能找到证书 假设文件名为 example ,其中 example 就是私钥,需要妥善保管,example.pub 就是公钥,放置于服务器上

配置证书登录

配置公钥

# 如果您的用户 SSH 目录不存在,请使用 mkdir 命令创建它并设置正确的权限
mkdir -p ~/.ssh
chmod 0700 ~/.ssh
# 使用文本编辑器打开 ~/.ssh/authorized_keys 文件,并追加公钥
# 命令行追加
cat ./example.pub >> ~/.ssh/authorized_keys
# 手动编辑追加
vi ~/.ssh/authorized_keys
# 修改文件权限使只有本用户组能访问
chmod 0600 ~/.ssh/authorized_keys
chown -R your_user:your_group ~/.ssh 

配置 SSH

# 文本编辑器打开 /etc/ssh/sshd_config 文件
vi /etc/ssh/sshd_config

# 检查以下行
# 开启证书登录(默认为yes,确保其不是被取消注释的no)
PubkeyAuthentication
# 授权秘钥文件位置(如果被取消注释,确保其指向你的authorized_keys)
AuthorizedKeysFile
# 密码验证登录(默认为yes,证书登录部署完成可以手动关闭以提高安全性)
PasswordAuthentication no

# 同时可选择配置以下行
# 监听端口
Port
# 监听地址
ListenAddress
# 允许root认证登录
PermitRootLogin

保存完成后,不要立刻断开连接,这样还有一丝立刻还原的机会

# 客户端配置好证书登录后准备连接
# 重启 sshd
systemctl restart sshd
# 重启后就可以用秘钥登录了

注意

在跨大版本更新时,OpenSSH 更新会让你选择如何应用 sshd_config 文件的更改,默认是使用最新的默认配置,这将导致配置被还原

标签
这篇文章有价值吗
0
0
评论 (0条)
No Data