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
,
所以最终导致按照旧教程无法通过密钥登录