在腾讯云、阿里云等云服务器上升级Ubuntu18.04系统版本,然后一切正常,但是发现ssh不能正常连接,经过一番探索,得到了解决方法,以下分享方法。
背景 Ubuntu 18.04已经发布好几个月了,现在Ubuntu 18.10也已经发布了,但是国内的云服务器厂商里只有阿里云才有Ubuntu 18.04的镜像,腾讯云目前还没有,很多人也想从Ubuntu 16.04服务器升级成Ubuntu 18.04服务器。 目前版本的Ubuntu提供了非常方便的升级方法,不需要备份数据,可以直接升级,具体的方法是,ssh连接到服务器后,执行: sudo do-release-upgrade 执行这一命令后,根据网络情况,可能需要等待一段时间才能开始交互式操作。过程中会有很多选项,一般来说选择默认设置(一路回车)就可以。 更新完之后(大概要十几分钟),会提示需要重启系统。等待重启完成后,再尝试ssh连接上去,会发现:连不上了。 要怎么解决呢?需要卸载重装openssh-server,然后重启ssh服务,下面详细进行介绍。
准备工作 1、首先,你需要有这台服务器的管理权限(不是sudo权限,是云服务器厂商那里的账号管理权限)。 2、之后,你需要利用VNC方式登录服务器。 阿里云-远程连接:
腾讯云-登录:
腾讯云-默认为ssh登录,我们这里需要使用vnc:
腾讯云-vnc登录:
可能的问题 这种登录方式无法使用PEM密钥,只能用账号密码,所以如果原来Ubuntu 16.04服务器的配置是没有密码的,就需要临时设置一下密码:
关键的解决步骤 成功登录到Ubuntu服务器,见到熟悉的终端界面之后我们就可以开始解决ssh的问题了。 首先尝试直接重启ssh服务: sudo service ssh restart 一般来说是会失败的(我试了几次都如此)。那么,正确的解决办法是什么呢?如下: sudo apt remove openssh-server sudo apt install openssh-server 卸载重装openssh-server,注意在重新安装后会让你选择是保留本地配置还是用新配置覆盖本地配置,这里选择用新配置进行覆盖。 之后,再启动ssh服务就一切OK了: sudo service ssh start 尝试一下从本地ssh登录到服务器,应该没有问题了。这样,你就完成了服务器从Ubuntu 16.04升级到Ubuntu 18.04的工作。
最后的工作 把之前临时设置的密码清除掉,以zhangsan用户为例: sudo passwd -l zhangsan 这样就把刚才临时设置的密码给清除掉了。
问题分析 上面的操作步骤可以解决升级ubuntu导致的ssh无法登陆问题,那么问题的原因出在哪里呢? 推测1:升级方式 实际上,在使用do-release-upgrade进行升级时,是有相关的提示的,不建议使用ssh方式升级系统,如果升级出现问题,将导致ssh无法连接。 所以,如果有条件的话,可以直接用vnc方式远程连接然后进行系统升级。 推测2:ssh配置文件 在更新过程中,有一次是提示选择是否更新ssh配置文件,默认选项是不更新(使用本地原有的文件)。考虑到后来的解决办法里是重新安装openssh-server然后覆盖本地的配置文件,有可能在这一步中选择覆盖本地配置文件的话,就不会出现ssh无法连接的问题。由于没有尝试过,这里我无法给出确定的结论。
相关主题 |