搭建Aqours Online Judge的琐琐碎碎(二)为什么我更新了18.04之后就ssh不上去了啊?

事情发生在前几天,我闲着无聊通过Windows下的git bash连接到服务器,看到很久之前开始就挂在那里的18.04更新,于是命令行敲下do--release-upgrade,等着服务器慢慢自己跑更新然后去吃饭。吃完饭回来再进行ssh登陆,却发现连接已经被拒绝,试了多台设备均无法通过ssh方式登陆服务器。

之后使用VNC进行登陆——它相当于直接在远程服务器上连接了一台显示器,通过显示器来进行对服务器的操作,可以直接通过浏览器进行访问。本人测试了macOS下的Safari、Chrome浏览器和Windows下的Chrome、360极速浏览器,最后发现对腾讯云的VNC连接支持得最好的是Windows下的360极速。基本上命令与显示之类的都是正常的。

找好了能够支持的浏览器,就可以开始debug了。先用sudo service ssh status命令查看服务器的状态,显示错误——

Starting ssh (via systemctl): ssh.serviceJob for ssh.service failed because the control process exited with error code.
See "systemctl status ssh.service" and "journalctl -xe" for details.
failed!

问题的报错信息是——

ssh.service: Start request repeated too quickly.
ssh.service: Failed with result 'exit-code'.
Failed to start OpenBSD Secure Shell server.

然后再输入/usr/sbin/sshd -T查看状态,发现是/etc/ssh/sshd_config里的cipher出现了错误。本人在排这一次错的过程中耗费时间最多的时候就是在尝试修改sshd_config配置文件。通过VNC使用vim的体验糟糕无比,几乎可以说是不可用,唯一可以使用的编辑器其实是没怎么用过的nano。

用nano将cipher改成aes256-cbc,aes192-cbc,aes128-cbc三个之后,重新使用/usr/sbin/sshd -T查看状态,SSH stopped working due to bad mac spec——这次直接把hmac-ripemd160删除掉就解决了(猜测是该算法已经不再使用)。

最后一个问题是Missing privilege separation directory: /run/sshd,这个解决起来最简单,直接用最基础的Linux系统操作,cd run然后mkdir sshd就解决了。重启SSH服务,运行成功,截一张图来庆祝一下(VNC连接服务器的字体相当原始):

通过macOS自带terminal尝试连接,继续报错——Unable to negotiate with IP port 22: no matching cipher found. Their offer: aes256-cbc, aes192-cbc, aes128-cbc。以后连接这台服务器得使用ssh -c aes256-cbc username@IP才可以进入——意思是强制使用aes256-cbc的加密算法来登陆这台服务器。

【2019年7月26日更新】

cipher改成aes256-cbc,aes192-cbc,aes128-cbc之后用ssh是可以指定加密方式来登陆的,但是Sublime Text 3的SFTP功能不可用(作为对比,PyCharm以及FileZilla可以正常使用)。原因是某些加密算法(如cbc结尾的这三个)是比较老的加密算法,会被客户端默认拒绝。

我们只需要加上aes128-ctr,aes192-ctr,aes256-ctr三个加密算法之后,客户端就可以直接ssh username@IP登陆,Sublime Text 3的SFTP功能也可以正常使用了。

 

posted @ 2019-07-25 12:54  アカツキ  阅读(439)  评论(0编辑  收藏  举报