You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Cloud Run上Docker容器SSH连接本地机器超时问题求助

解决Cloud Run容器无法SSH连接本地机器的超时问题

核心问题分析

本地Docker能正常连接本地SSH,是因为容器和本地机器处于同一网络环境(局域网/host网络);但Cloud Run部署在Google云的公共网络,要主动连接你的本地机器,会遇到NAT穿透、端口转发、防火墙限制等网络障碍,这是超时的主要原因。

分步排查与解决

1. 配置本地网络的端口转发

你的本地机器大概率在路由器NAT后面,Cloud Run的请求无法直接到达本地22端口:

  • 登录路由器管理后台,找到「端口转发」(或「虚拟服务器」)设置
  • 添加规则:外部端口22,映射到本地机器的内网IP(比如192.168.1.100)和内部端口22
  • 保存后,用其他网络的机器执行telnet <你的公网IP> 22,如果看到类似SSH-2.0-OpenSSH_8.2p1的响应,说明端口转发生效。

2. 验证Cloud Run的出口IP与VPC配置

你提到配置了带静态IP的VPC,但要确保静态IP是Cloud Run的出口IP:

  • Cloud Run默认出口IP是动态的,固定出口IP必须搭配「VPC Connector + Cloud NAT」:
    • 确认Cloud NAT已创建,且静态IP关联到Cloud NAT的地址池
    • 确认Cloud Run服务使用的VPC Connector指向该VPC,且开启了「通过VPC访问外部网络」
  • 本地机器防火墙要仅允许这个静态IP访问22端口,避免开放给所有外部IP。

3. 检查本地SSH与防火墙设置

  • 本地机器防火墙(Windows防火墙、Linux ufw/iptables):添加入站规则,允许来自Cloud Run静态IP的22端口请求
  • SSH服务配置(Linux:/etc/ssh/sshd_config):
    • 确保PubkeyAuthentication yes开启(你用密钥登录)
    • 检查AllowUsers/DenyUsers规则,不要限制目标用户从外部IP登录
    • 确认PermitRootLogin(如果用root用户)或对应用户的登录权限未被禁用

4. 测试连通性

  • 在Cloud Run容器内执行nc -zv <你的公网IP> 22,返回succeeded!说明网络通了;否则排查VPC egress规则或端口转发是否有误
  • 如果容器内连不上,检查Cloud Run服务配置:是否允许22端口的egress流量,VPC路由是否指向正确出口

替代方案(如果端口转发不可行)

若你的网络环境无法配置端口转发(比如公司网络限制),可换更适配Cloud Run特性的方案:

  • 文件中转:把待处理文件上传到Google Cloud Storage,本地机器拉取处理后再上传回Storage,Cloud Run容器直接从Storage读取结果
  • 反向SSH:让本地机器主动连接Cloud Run容器,但Cloud Run是无状态的,容器重启后连接会中断,仅适合临时测试

内容的提问来源于stack exchange,提问作者TheNomad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 11:27:37