GCP Linux无法ssh处理

作者:MeshCloud脉时云公有云架构师严大淇

引言

有时会出现误操作的情况,错误的修改了某个文件内容或权限,导致系统无法登陆。 例如:

  1. fstab挂载了一个不存在的磁盘
  2. 修改了防火墙规则限制了登陆
  3. /etc/security/access.conf 配置了一些规则限制登陆
  4. 误操作修改了/var/empty/sshd的权限
  5. /etc/ssh/sshd_config 内容不正确
  6. 关闭了sshd服务等
  7. selinux打开导致ssh登陆失败
  8. CPU,内存使用过高导致无法连接

在服务器无法ssh登陆,且没有镜像或快照备份的情况下,通过以下方法可以解决一些简单的服务器无法ssh连接的问题

场景一

服务器可以正常启动,包括但不限于防火墙规则问题,ssh服务问题,root用户限制问题,文件权限等

情况一

服务器开启了密码登陆,可以直接使用串口登陆解决

实施步骤

1,编辑实例,勾选启用连接到串行端口

2,通过穿行端口连接服务器

3,登陆后即可修改相关配置解决问题 例:sshd 配置文件权限问题

执行以下命令,查看报错原因。

sshd -t

若返回类似如下信息:

“/var/empty/sshd must be owned by root and not group or world-writable.”

执行以下命令,修改 /var/empty/sshd/ 文件权限。

chmod 711 /var/empty/sshd/

若返回类似如下信息:

“/etc/ssh/ssh_host_rsa_key are too open”

执行以下命令,修改 /etc/ssh/ssh_host_rsa_key文件权限

chmod 600 /etc/ssh/ssh_host_rsa_key

情况二

服务器未开启密码登陆,无法直接通过串行控制台连接

实施步骤

1,可以为实例添加启动脚本

2,针对上述问题,可以通过此脚本添加用户及密码

#! /bin/bash

adduser USERNAME

echo USERNAME:PASSWORD | chpasswd

usermod -aG google-sudoers USERNAME

3,使用新添加的用户通过串行控制台登陆,步骤见情况一

场景二

服务器无法正常启动,如/etc/fstab下挂载了一个不存在的磁盘,此时是无法通过串口登陆的。

思路:可以准备一台新的实例,把故障机的系统盘分离后,挂载到新的实例上,修改/etc/fstab文件

实施步骤

1,关机(故障机操作)

2,点击实例ID进入,点击编辑分离启动盘(故障机操作)

3,将故障机分离的启动盘添加到新实例上(新实例操作)

4,新实例挂载磁盘(新实例操作)

此时可以看到新实例具有两块盘

挂载sdb1到mnt目录下

mount /dev/sdb1 /mnt

5,进入/mnt/etc/fstab文件注释掉不存在的磁盘即可

6,修复完毕后,分离附加的系统盘(新实例操作)

7,分离后将磁盘重新添加到故障机(故障机操作)

提醒

风险无处不在,建议做好镜像或定期快照备份

发表评论

您的电子邮箱地址不会被公开。