解决阿里云、腾讯云等升级ubuntu系统版本后ssh无法连接的问题

Ubuntu 18.04出来已经有一段时间了(18.10都出来了),国内的云厂商里面,阿里云已经有了18.04的镜像,腾讯云目前还没有。大家手头16.04的服务器,是否已经有了升级的计划呢?

目前版本的Ubuntu提供了非常方便的升级方法,不需要备份数据,可以直接升级,具体的方法是,ssh连接到服务器后,执行:

sudo do-release-upgrade
复制代码

执行这一命令后,根据网络情况,可能需要等待一段时间才能开始交互式操作。过程中会有很多选项,一般来说选择默认设置(一路回车)就可以。

更新完之后(大概要十几分钟),会提示需要重启系统。等待重启完成后,再尝试ssh连接上去,会发现:

连不上了!

怎么解决呢?

TL;DR: 卸载重装openssh-server,然后重启ssh服务

下面详细进行介绍

准备工作

  1. 首先,你需要有这台服务器的管理权限(不是sudo权限,是云服务器厂商那里的账号管理权限)
  2. 之后,你需要利用VNC方式登录服务器

可能的问题

这种登录方式无法使用PEM密钥,只能用账号密码,所以如果原来服务器的配置是没有密码的,就需要临时设置一下密码

关键步骤

成功登录到服务器,见到熟悉的终端界面之后我们就可以开始解决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登录到服务器,应该没有问题了。这样,你就完成了服务器从16.04升级到18.04的工作。

扫尾工作

把之前临时设置的密码清除掉

以zhangsan用户为例

sudo passwd -l zhangsan
复制代码

这样就把刚才临时设置的密码给清除掉了。

问题分析

上面的操作步骤可以解决升级ubuntu导致的ssh无法登陆问题,那么问题的原因出在哪里呢?

推测1:升级方式

实际上,在使用do-release-upgrade进行升级时,是有相关的提示的

(大意)不建议使用ssh方式升级系统,如果升级出现问题,将导致ssh无法连接

所以,如果有条件的话,可以直接用vnc方式远程连接然后进行系统升级。

推测2:ssh配置文件

在更新过程中,有一次是提示选择是否更新ssh配置文件,默认选项是不更新(使用本地原有的文件)。考虑到后来的解决办法里是重新安装openssh-server然后覆盖本地的配置文件,有可能在这一步中选择覆盖本地配置文件的话,就不会出现ssh无法连接的问题。由于没有尝试过,这里我无法给出确定的结论。

您好!要在云服务器上部署Vue+SpringBoot前后端分离项目,需要进行以下步骤: 1. 创建云服务器:选择合适的云服务提供商(如阿里云腾讯云、华为云等),注册账号并登录控制台,在控制台上创建一台云服务器。 2. 配置云服务器:选择适合您项目需求的操作系统,通常推荐选择Linux系统(如CentOS、Ubuntu等),并进行基本的配置,如选择实例规格、设置登录密码或密钥等。 3. 登录云服务器:使用SSH登录到您的云服务器,可以使用SSH工具(如PuTTY、Xshell等)连接到服务器。 4. 安装Docker:在云服务器上安装Docker,可以根据不同的操作系统选择相应的安装方式。您可以参考Docker官方文档或者云服务提供商的文档来完成安装。 5. 构建Vue项目:在本地开发环境中使用Vue CLI创建Vue项目,并进行开发和测试。确保项目可以正常运行并且没有错误。 6. 构建SpringBoot项目:使用Spring Initializr创建SpringBoot项目,并进行开发和测试。确保项目可以正常运行并且没有错误。 7. 将前端项目打包:在本地执行构建命令,将Vue项目打包成静态文件。执行命令如下: ``` npm run build ``` 8. 将打包后的文件上传至云服务器:将打包后的静态文件(通常在`dist`目录下)上传至云服务器。您可以使用FTP工具(如FileZilla)进行文件上传,或者使用命令行工具(如scp)进行文件复制。 9. 创建Docker镜像:在云服务器上创建一个Docker镜像,用于运行SpringBoot项目。在项目的根目录下创建一个`Dockerfile`文件,并在其中定义Docker镜像的构建步骤。示例`Dockerfile`如下: ``` FROM openjdk:8-jdk-alpine VOLUME /tmp ADD target/myproject.jar app.jar ENTRYPOINT ["java", "-jar", "/app.jar"] ``` 10. 构建Docker镜像:在云服务器上执行以下命令,构建Docker镜像: ``` docker build -t myproject . ``` 11. 运行Docker容器:在云服务器上执行以下命令,运行Docker容器: ``` docker run -d -p 80:8080 myproject ``` 12. 访问应用:通过浏览器访问云服务器的公网IP地址,即可查看部署好的前后端分离项目。 请注意,以上步骤仅为概述,具体操作可能因您的项目需求、云服务提供商等而有所不同。建议您参考相关文档或教程进行操作,并根据实际情况进行调整。祝您部署成功!如有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值