1.问题描述
Xshell连接远程服务器node1,提示找不到匹配的host key算法;但是用同机房的其他服务器可以使用ssh连接到这个node1机器;
2.问题处理
问题处理尝试了很多方法,可能大家遇到的有所不同,可以尝试一下本文中的方法,看是否能解决到你的问题。如果解决不了,那非常抱歉,请移步百度搜索寻找。
2.1.尝试方法一
1.删除服务器中用户家目录下.ssh/known_hosts文件中关于服务器node1相关的内容。
2.删除服务器中用户家目录下.ssh/known_hosts文件所有内容。
3.删除服务器中用户家目录下.ssh/known_hosts文件。
注:以上相当于三种类似尝试,但博主环境该方法没能解决问题。
2.2.尝试方法二
服务器node1中文件/etc/ssh/ssh_config添加以下两行;
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
StrictHostKeyChecking:用于控制是否对远程主机的公钥进行严格检查,有三种级别,yes(最安全级别,需要匹配公钥,否则不能连接,也不会有提示信息)、ask(默认级别,需要匹配公钥,否则不能连接,会有提示信息)、no(不安全级别,不进行任何提示,自动添加公钥)。
UserKnownHostsFile:是SSH连接时用来指定known_hosts文件路径的配置项,设置为/dev/null
选项来忽略known_hosts文件的检查。
注:该方法和上一个类似,都是通过公钥相关的方法处理,但博主环境该方法也不能解决问题。
2.3.尝试方法三
服务器node1中文件/etc/hosts.allow添加以下一行;
sshd:ALL
/etc/hosts.allow文件用于定义哪些主机被允许访问SSH服务,文件中添加sshd:ALL表示允许所有主机访问SSH服务。
注:同机房可以访问,Xshell宿主机不是同机房,尝试允许所有主机访问,但博主环境该方法还是不能解决问题。
2.4.尝试方法四
对比.ssh目录下文件权限不太一样,权限最后的那个点不同,如下:
[root@node1 .ssh]# ll
-rw-r--r-- 1 root root 410 Mar 9 17:59 authorized_keys
[root@node2 .ssh]# ll
-rw-------. 1 root root 410 Jan 11 17:20 authorized_keys
-rw-r--r--. 1 root root 955 Feb 22 16:26 known_hosts
删除node1服务器/root/.ssh文件夹下所有的文件,重新生成或者其他节点拷贝authorized_keys文件到node1,但是权限还是不一致。这里可能大家注意到了,文件读写执行权限后面有一个点(-rw-r--r--.),这个点和selinux有关,当selinux为强制模式(Enforcing)时就会有这个点,当selinux为禁用模式(Disabled)时就没有这个点。
注:博主环境还是未解决。
2.5.尝试方法五
对比/etc/ssh目录下ssh_host开头相关文件的权限不太一样,正常环境的文件是root用户和ssh_keys用户组的权限,异常环境的文件是root用户组和root用户的权限。
1.正常服务器ssh_host_相关文件权限。
[root@node2 .ssh]# ll /etc/ssh/ssh_host_*
-rw-r-----. 1 root ssh_keys 227 Jan 11 15:36 /etc/ssh/ssh_host_ecdsa_key
-rw-r--r--. 1 root root 162 Jan 11 15:36 /etc/ssh/ssh_host_ecdsa_key.pub
-rw-r-----. 1 root ssh_keys 387 Jan 11 15:36 /etc/ssh/ssh_host_ed25519_key
-rw-r--r--. 1 root root 82 Jan 11 15:36 /etc/ssh/ssh_host_ed25519_key.pub
-rw-r-----. 1 root ssh_keys 1679 Jan 11 15:36 /etc/ssh/ssh_host_rsa_key
-rw-r--r--. 1 root root 382 Jan 11 15:36 /etc/ssh/ssh_host_rsa_key.pub
2.异常服务器ssh_host_相关文件权限。
[root@node1 .ssh]# ll /etc/ssh/ssh_host_*
-rw-r-----. 1 root root 227 Jan 11 15:23 /etc/ssh/ssh_host_ecdsa_key
-rw-r--r--. 1 root root 162 Jan 11 15:23 /etc/ssh/ssh_host_ecdsa_key.pub
-rw-------. 1 root root 387 Jan 11 15:23 /etc/ssh/ssh_host_ed25519_key
-rw-r--r--. 1 root root 82 Jan 11 15:23 /etc/ssh/ssh_host_ed25519_key.pub
-rw-r-----. 1 root root 1675 Jan 11 15:23 /etc/ssh/ssh_host_rsa_key
-rw-r--r--. 1 root root 382 Jan 11 15:23 /etc/ssh/ssh_host_rsa_key.pub
使用chown root:ssh_keys /etc/ssh/ssh_host_*_key命令修改异常服务器文件权限后,问题成功解决。