openEuler 22.03 LTS使用密钥登录踩坑记录

因为工作需要安装了openEuler的22.03 LTS系统为了安全设置密钥登录的踩坑过程

设置密钥登录步骤

1、制作密钥对

[root@localhost ~]# ssh-keygen -t ed25519 <== 建立密钥对(这里是和网上现有教程不同的地方)
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/id_ed25519): <== 按 Enter
Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
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 <== 公钥

2. 在服务器上安装公钥

键入以下命令,在服务器上安装公钥:

[root@host ~]$ cd .ssh
[root@host .ssh]$ cat id_ed25519.pub >> authorized_keys

如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:

[root@host .ssh]$ chmod 600 authorized_keys
[root@host .ssh]$ chmod 700 ~/.ssh

3. 设置 SSH,打开密钥登录功能

使用文本编辑器如:vi等编辑/etc/ssh/sshd_config文件,进行如下设置:

PubkeyAuthentication yes

另外,请留意 root 用户能否通过 SSH 登录:

PermitRootLogin yes

最后,重启 SSH 服务:

[root@host .ssh]$ systemctl restart sshd

4.使用密钥登录

id_ed25519文件下载,使用ssh软件将下载的id_ed25519设置为私钥文件即可通过密钥登录。

5.禁用密码登录

当成功以密钥方式登录后,再禁用密码登录!!! 使用文本编辑器如:vi等编辑/etc/ssh/sshd_config文件,进行如下设置:

PasswordAuthentication no

重启 SSH 服务:

systemctl restart sshd

网上部分教程的错误

以菜鸟教程为例(仅以此为举例,其他有很多网站上的教程都是错误的!!!)

菜鸟教程:设置 SSH 通过密钥登录https://www.runoob.com/w3cnote/set-ssh-login-key.html

如果完全根据菜鸟教程:设置 SSH 通过密钥登录 这篇教程走会导致如图的两个问题

打开ssh详细日志 /etc/ssh/sshd_config 将日志级别调整到 LogLevel VERBOSE

journalctl --unit sshd --no-pager

上面的错误日志是通过输入 获取的日志

问题①警告:Deprecated option RSAAuthentication

sshd[45855]: rexec line 143: Deprecated option RSAAuthentication
sshd[45855]: rexec line 145: Deprecated option RhostsRSAAuthentication

博主:MiK 文章:https://www.cnblogs.com/Leroscox/p/9627809.html CentOS7.4相对于之前版本,做了一些与sshd相关的安全更新来加强sshd的安全性。其中之一就是弃用RSAAuthentication支持。从CentOS7.3升级上来的用户会在升级时被告知这一变化。 所以并不需要修改或添加 RSAAuthentication yes

问题②严重问题:完全无法通过密钥登录

当你想使用putty等软件密钥登录时会提示 查看错误日志可知 提示ssh-rsa的密钥不被支持

原因有三点: ①2021年09月26日发布的OpenSSH 8.8中移除了对RSA-SHA1的支持, ②openEuler 22.03 LTS内置的OpenSSH版本>=8.8, ③如果只输入ssh-keygen则默认生成的密钥类型就是RSA-SHA1, 所以最终导致按照旧教程无法通过密钥登录