Google Cloud Compute Engine实例Web SSH连接失败排查求助
问题分析
从你提供的串行控制台输出来看,实例启动过程中的关键初始化步骤都是正常的:
instance-2 login: Dec 9 09:50:50 instance-2 google-accounts: INFO Adding user sirjack9601 to the Google sudoers group.
[ 27.313823] google_accounts_daemon[1526]: Adding user sirjack9601 to group google-sudoers
Dec 9 09:50:50 instance-2 google_accounts_daemon[1526]: Adding user sirjack9601 to group google-sudoers
Dec 9 09:51:16 instance-2 systemd[1]: systemd-hostnamed.service: Succeeded.
用户sirjack9601已成功获得sudo权限,系统基础服务也正常运行,说明实例本身没有启动层面的致命故障。Web SSH连接卡住的问题,大概率出在网络配置、SSH服务状态或身份验证机制上。
排查与解决方案
1. 检查防火墙与网络配置
- 确认实例所在VPC的防火墙规则中,是否存在并启用了允许TCP 22端口入站流量的规则(默认的
allow-ssh规则即可)。 - 检查实例是否拥有外部IP地址:如果仅配置了内部IP,Web SSH无法直接连接,需要通过堡垒机、Cloud VPN等方式中转访问。
- 若使用共享VPC或VPC peering,确保对等网络的防火墙规则也允许SSH流量通行。
2. 验证SSH服务状态
如果能通过GCE控制台的「串行端口」标签页直接登录实例(输入用户名和密码),执行以下命令排查SSH服务:
# 查看SSH服务运行状态 systemctl status sshd # 若服务异常,尝试重启SSH服务 sudo systemctl restart sshd
如果串行控制台也无法登录,可能是系统文件损坏,建议创建磁盘快照后挂载到其他实例修复,或直接重新创建实例。
3. 配置OS Login(推荐方案)
你提到迁移至OS Login可提升密钥传输速度,这也是解决Web SSH连接问题的高效方案:
- 在实例详情页点击「编辑」,勾选「启用OS Login」开关。
- 确保你的Google账号拥有
Compute OS Login或Compute OS Admin Login的IAM角色(项目级或实例级权限均可)。 - 配置完成后重新尝试Web SSH,OS Login会自动管理密钥生命周期,避免传统密钥配置的各类问题。
4. 检查传统SSH密钥配置(未使用OS Login时)
- 确认你的公钥已正确添加到实例或项目级的
ssh-keysmetadata中,格式为username:ssh-rsa AAAAB3NzaC1yc2E...。 - 登录实例后,检查用户
sirjack9601的~/.ssh/authorized_keys文件,确保包含对应公钥,且文件权限正确:chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
5. 临时替代方案:本地终端SSH连接
如果Web SSH始终无法正常工作,可以用本地终端直接连接,排除Web终端本身的问题:
# 替换为你的私钥路径和实例外部IP ssh -i /path/to/your/private-key sirjack9601@[实例外部IP]
这种方式还能直观看到连接过程中的错误日志,便于进一步定位问题。
内容的提问来源于stack exchange,提问作者oettam_oisolliv




