openEuler 使用密钥登录SSH以及遇到的奇怪问题(一直提示Failed publickey for root,结果最后重启好了)

 

密钥登录方法:很多博客都有介绍,就不详细说了,重点说一些注意事项:

1.第一步生成公钥和私钥:

openSSH 8.8以上已经去除一些不安全密钥算法协议,包括RSA-SHA1(只输ssh-keygen默认为此协议),而 欧拉22.03携带版本是8.8,所以必须指定其他支持的协议,建议使用ed25519算法,即使用以下命令:

 ssh-keygen -t ed25519

 

2.将生成的公钥  复制到 服务器 要登录用户的 家目录(root用户为/root,其他用户为/home/用户名)/.ssh/authorized_keys 文件里,没有的话自己创建;

其中openSSH 为了安全,只允许 文件所有者有写入权限,所以如果权限不对,要自己修改 .ssh 为700,authorized_keys为600

 

3.编辑配置文件 /etc/ssh/sshd_config,确保以下项目正确

PermitRootLogin yes

PubkeyAuthentication yes            # 是否可用公钥方式验证
 
以下两项已不建议使用,可以注释掉,自然也不需要进行配置:
RhostsRSAAuthentication
RSAAuthentication

4.测试登录成功后,可以禁用密码登录,同样编辑3里的配置文件

PasswordAuthentication no           # 是否可用密码验证(可用于限制密码登录)
PermitRootLogin prohibit-password   # 是否可用密码登录root用户(可用于限制密码登录)
 
5.重启 sshd 服务 systemctl restart sshd

6.Windows10 也默认安装了openSSH,可以通过命令行使用,一些ssh连接工具如(mobaxterm)也提供了生成密钥的功能:

Tools-->MobaKeyGen--->复制公钥到服务器,下载私钥到客户端

详细可参考:MobaXterm设置ssh免密码登录服务器教程 - Deceiver_Ker - 博客园 (cnblogs.com)

 

如果碰到登录不了,定位问题方法

1.查看安全日志文件/var/log/secure

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

然后使用命令查看ssh 日志:  journalctl --unit sshd --no-pager

3.先停止ssh服务 systemctl stop sshd,再运行调试模式 /usr/sbin/sshd -d,然后进行登录测试,查看输出的信息
 
我碰到的奇怪问题
检查了所有配置都是正确的,但就是登录不了,报错Failed publickey for root from XXXX,最后使用debug调试模式 ,结果竟然登上了???
然后换回服务,又登不上了,只搜到一个跟我又一样遭遇的,他最后是放弃使用服务,使用手动运行sshd,我本来也想再找找原因,然后启动了另一个linux服务器,
把公钥放上,直接登录成功!!!,而且这两个原系统基本是一样的,然后我想用 systemctl status 看一下启动参数有什么不一样,发现,手动运行的sshd停不了了,最后想着死马当活马医,直接重启服务器,竟然没有错误了,可以登录了,真是奇怪;就是这样,最后也没找到原因,推断是多次修改配置文件过程中,ssdh运行参数出现了混乱,如果有同样问题的同学可以试试重启.
 
参考文章:
 
 

 

journalctl --unit sshd --no-pager
posted @ 2023-03-08 02:29  dirgo  阅读(2821)  评论(0编辑  收藏  举报