總結SSH登陸故障:expected key exchange group packet form server

天府雲創發表於2018-06-13

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

相關文章