ubuntu 升级系统时导致sshd 错误: Bad SSH2 cipher spec

by kingzcheung on September 22, 2018

阿里云服务器(ubuntu 16.04)升级系统(ubuntu 18.04)的时候,发现ssh竟然打不开,通过控制台连接一看,发现sshd竟然无法启动,通过日志发现,sshd报类似以下的错误:

Bad SSH2 cipher spec 'chacha20-poly1305@openssh.com,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes192-cbc,aes256-cbc'.

通过查看资料得出大概原因是,sshd启动的时候会读取配置文件sshd_config内容,然后和代码里面的数组ciphers(文件cipher.c)比较,如果 ciphers 的数组配置与 sshd_config 不一样的话,就会引发 Bad SSH2 cipher spec 的错误,而升级系统刚好升级了openssh,但是配置并没有改变,所以导致配置与版本不一致。

解决起来也很简单,通过下以命令查看ssh使用了哪些ciphers:

$ ssh -Q cipher

3des-cbc
blowfish-cbc
cast128-cbc
arcfour
arcfour128
arcfour256
aes128-cbc
aes192-cbc
aes256-cbc
rijndael-cbc@lysator.liu.se
aes128-ctr
aes192-ctr
aes256-ctr
aes128-gcm@openssh.com
aes256-gcm@openssh.com
chacha20-poly1305@openssh.com

然后打开 /etc/ssh/sshd_config 找到 Ciphers *****那一行改就是了。

最后,

systemctl start sshd