如何解决谷歌云平台(GCP)SSH连接出现Error 4003的问题
GCP SSH 访问报错 Error 4003 排查解决方案
1 核查实例基础状态
- 确认目标GCE实例处于运行中状态,未出现启动失败、崩溃、资源耗尽(CPU/内存占满)的情况,若实例异常可以先尝试重启实例后再测试SSH连接
- 若通过公网访问SSH,确认实例已分配公网IP且未被封禁;若通过内网访问,确认客户端与实例处于同一VPC,或跨VPC/本地机房的网络链路已经打通
2 核查VPC防火墙配置
- 确认VPC入站防火墙规则已开放22端口,源地址范围包含你当前访问SSH的客户端IP,临时测试可暂时设置源为
0.0.0.0/0,测试完成后需立刻收紧源地址范围避免安全风险 - 确认防火墙规则的目标设置覆盖当前实例:如果规则是按实例标签匹配,确认实例已绑定对应标签;如果是按VPC内所有实例匹配,确认实例在对应VPC下
- 确认没有优先级更高的拒绝规则覆盖了22端口的允许规则:GCP防火墙规则优先级数值越小优先级越高,若有优先级更高的入站规则拒绝了22端口访问,需要调整规则优先级或内容
3 核查实例内部SSH服务状态
通过GCP控制台自带的串行控制台功能直接登录实例,无需走网络SSH链路,验证内部服务状态:
- 执行
systemctl status sshd查看SSH服务运行状态,若服务未运行执行systemctl start sshd启动,执行systemctl enable sshd设置开机自启 - 查看
/etc/ssh/sshd_config配置文件,确认SSH监听端口为22、未限制登录用户或客户端IP - 执行
iptables -L -n查看实例内部防火墙规则,确认内部没有封禁22端口入站流量
4 核查IAM与登录权限配置
- 若开启了OS Login功能,确认当前使用的账号拥有
roles/compute.osLogin或roles/compute.osAdminLogin权限,权限不足会直接被拒绝访问 - 若未开启OS Login,确认你使用的SSH公钥已经正确添加到实例元数据或项目元数据中,公钥格式错误、用户名不匹配都会导致连接失败
5 核查路由与网络ACL配置
- 确认实例所属VPC的路由表中存在默认路由
0.0.0.0/0指向互联网网关,否则实例无法与公网通信,公网SSH访问会失败 - 确认实例所在子网的网络ACL没有禁止22端口的入站、出站流量,网络ACL为无状态规则,需要同时放通入站和出站的22端口流量才会生效
内容的提问来源于stack exchange,提问作者BashMeet
相关产品推荐
相关产品推荐

