安装自定义Docker服务后无法通过IAP Desktop连接GCP RHEL虚拟机
解决GCP RHEL虚拟机安装自定义Docker后SSH/IAP Desktop连接失败问题
排查步骤
通过GCP串行控制台接入机器
这是当前唯一能直接访问故障虚拟机的途径:在GCP控制台的VM实例详情页找到「串行端口1」,启用后登录(使用预设的SSH密钥用户或本地密码)。检查SSH服务状态
执行命令查看sshd运行状态:systemctl status sshd如果服务未启动,手动启动并设置开机自启:
systemctl start sshd systemctl enable sshd验证SSH配置文件
打开/etc/ssh/sshd_config,确认以下关键配置项:Port 22未被注释或修改为未放行的端口PermitRootLogin设置为prohibit-password(密钥登录场景)或yes(密码登录场景)PasswordAuthentication匹配你的登录方式(密钥登录可设为no,密码登录设为yes)AllowUsers未限制登录用户(若配置需确保你的登录用户在列表内)
修改后重启sshd服务:systemctl restart sshd
检查防火墙规则
- 系统层防火墙(firewalld):
确认firewall-cmd --list-allssh服务在允许列表中,若不在则添加并重载规则:firewall-cmd --add-service=ssh --permanent firewall-cmd --reload - GCP VPC防火墙:确认已放行来自IAP网段(35.235.240.0/20)及同网络虚拟机IP段的22端口流量。
- 系统层防火墙(firewalld):
排查Docker安装脚本的改动
检查你的自定义Docker安装脚本,确认是否包含以下操作:- 修改
/etc/sysctl.conf等网络配置文件 - 替换或修改SSH配置文件
- 执行
iptables规则调整或防火墙配置变更
对比正常RHEL虚拟机的关键文件(如/etc/ssh/sshd_config、/etc/firewalld/zones/public.xml),定位差异点。
- 修改
检查文件权限与SELinux残留问题
虽然已禁用SELinux,但脚本可能修改了SSH相关文件的权限:ls -l /etc/ssh/sshd_config ls -l /var/empty/sshd确保
/etc/ssh/sshd_config为root:root所有,权限为600;/var/empty/sshd权限为700且属主为root。验证网络配置
执行ip addr确认内网IP正常分配,ip route检查默认路由是否正确。若Docker脚本创建了自定义网桥,可能干扰了系统默认网络,可尝试停止Docker服务后测试连接:systemctl stop docker
解决建议
- 若SSH服务未启动或配置被篡改,恢复正确配置并重启服务。
- 若防火墙规则被修改,重新添加SSH允许规则并同步GCP VPC防火墙配置。
- 定位Docker脚本中导致网络/SSH异常的命令,调整后重新部署测试。
- 在新RHEL虚拟机上分步骤操作:先禁用SELinux重启测试连接,再执行Docker安装脚本的每一步并验证连接,快速定位故障触发点。
内容的提问来源于stack exchange,提问作者KBNanda
相关产品推荐
相关产品推荐

