总结SSH登陆故障:expected key exchange group packet form server

  • Post author:
  • Post category:其他


expected key exchange group packet form server 通常会出现在Navicat连接数据库或者putty/xshell/

WinSCP/SecureCRT等远程终端软件SSH到linux服务器是报错。(直接ssh命令主机是没有问题的,通过终端就会产生这类error)


前提环境:网络ping、端口、服务、权限和账号密码都正常的。


情况一、Navicat连接不上Linux服务器上的MySQL。


  1. )最直接办法版本问题:更新


    Navicat


    到最新版本即可解决


  2. 1.先进入linux连接数据库并输入密码:
 

  1. mysql





    uroot





    p

2.输入以下命令进行授权:

 

  1. GRANT ALL PRIVILEGES ON


    *.*


    TO


    ‘root’


    @


    ‘%’


    IDENTIFIED BY


    ‘这里写自己数据库的密码’


    WITH GRANT OPTION


    ;

3.刷新权限:

 

  1. FLUSH PRIVILEGES


    ;

Navicat连接不上阿里云的MySQL数据库,报SSH:expected key exchange group packet form server错误 其他 第1张

4.但是添加了权限之后,还是连接不上数据库。必须给服务器的安全组设置端口放行规则

Navicat连接不上阿里云的MySQL数据库,报SSH:expected key exchange group packet form server错误 其他 第2张

Navicat连接不上阿里云的MySQL数据库,报SSH:expected key exchange group packet form server错误 其他 第3张

5.接着就可以正常访问了。


情况二、putty/xshell/

WinSCP/SecureCRT等远程终端软件SSH到linux服务器是报错


ssh 密钥登录失败的问题,困惑了很久

生成的key应该是没有问题,因为我把生成的公钥写到到

/root/.ssh/authorized_keys

里面,然后执行

ssh root@xxx

能够直接登陆。但是换成普通用户则就出现了问题。现在的情况:

/home/test/.ssh

权限700

/home/test/.ssh/authorized_keys

权限600也执行了

chown -R test:test /home/test/.ssh


/etc/ssh/sshd_config

里面也开启了登陆认证

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys


service sshd restart

也执行过了


/etc/selinux/config

里面已经是

SELINUX=disabled


但是普通用户就是无法登录。

参看了安全日志/var/log/secure得到的结果也仅仅是一句:


Did not receive identification string from xxx



修改权限 chmod 644 authorized_keys

把ssh的


StrictModes


关闭 等操作都无果




问题应该是这样子的:



1、先在本机A的root用户下使用ssh-genkey生成了公私钥对,并将A机器公钥加入了远程机器B的root账户“.ssh/authorized_keys”中,可以正常从A机器使用root用户登录机器B。



2、但是同样在A机器的root用户下,使用 ssh test@B 命令登录远程机器B的test用户时,无法正常登录。



解决办法: 将A机器的root用户的公钥,加入 远程机器B的test用户下的“.ssh/authorized_keys” 文件中,即可实现。

自用安装测试的一台服务器上次yum update到centos 7.4,刚才发现跳转不过去了,提示:

expected key exchange group packet from server

赶紧登陆服务器看一下,诶,可以ssh登陆啊。SSH通道换成密码的形式,也是不行。

看一下SSHD的日志

journalctl –unit sshd –no-pager

Jan 24 17:51:20 hk sshd[1989]: /etc/ssh/sshd_config line 50: Deprecated option RSAAuthentication
Jan 24 17:51:20 hk systemd[1]: Started OpenSSH server daemon.
Jan 24 17:51:22 hk sshd[1990]: rexec line 50: Deprecated option RSAAuthentication
Jan 24 17:51:22 hk sshd[1990]: error: kex protocol error: type 30 seq 1 [preauth]

嘿,升级了openssh版本了啊,这个配置参数已经是被废弃掉的

于是我备份一下/etc/ssh/sshd_config文件便删掉了50行的RSAAuthentication

重启再试,嘿,还是不行,现在就剩下这句提示了:

error: kex protocol error: type 30 seq 1 [preauth]



得,试试呗。[


终极解决方案


]

# Add this to /etc/ssh/sshd_config
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1
# systemctl restart sshd

OK!成功ssh登陆。。。

原因大概就是

use

libssh2

, and libssh2 only support diffie-hellman key exchange methods

而且升级libssh2也未能解决,应该是个bug。



【原因导致】


服务器的sshd服务升级了


putty版本过低,会出现这个报错信息,你可以检查下版本,下个最新版的试试



https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html



【参考梯子文档】

diffie-hellman-group1-sha1 – CSDN博客

https://blog.csdn.net/shadow066/article/details/51222577

Putty SSH密钥登录CentOS7 – CSDN博客 https://blog.csdn.net/kkaazz/article/details/78808613



版权声明:本文为English0523原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。