MacBook M1使用gcloud SSH端口转发时遇SSL证书验证失败错误求助
GCP IAP SSH隧道SSL证书验证失败问题排查与解决
你遇到的这个SSL证书错误,核心是gcloud建立IAP隧道的WebSocket连接时,无法验证服务器证书链,常见原因和解决办法如下:
可能的原因
- 本地网络代理/安全软件拦截:公司内网的代理服务器、防火墙或安全软件(如杀毒软件)使用了自签名证书,拦截了IAP隧道的HTTPS连接,导致证书链验证失败。
- gcloud自带CA证书库不完整:M1 MacBook的gcloud二进制包自带的Python环境可能未包含系统根证书,或者证书库缺失了GCP IAP服务所需的根证书。
- 系统SSL环境变量冲突:如果
.zprofile或其他配置文件中设置了SSL_CERT_FILE等环境变量,可能导致gcloud使用了错误的证书路径。
解决办法
1. 让gcloud使用系统根证书
M1 Mac的系统根证书路径为/etc/ssl/cert.pem,通过环境变量让gcloud优先使用这个证书库:
# 临时生效,当前终端执行 export CLOUDSDK_PYTHON_SSL_CERT_FILE=/etc/ssl/cert.pem # 永久生效,添加到~/.zprofile末尾 echo 'export CLOUDSDK_PYTHON_SSL_CERT_FILE=/etc/ssl/cert.pem' >> ~/.zprofile source ~/.zprofile
设置完成后重新执行IAP SSH命令即可。
2. 临时跳过证书验证(仅限测试环境)
如果只是临时测试,可通过环境变量关闭证书验证(注意:此方法不安全,禁止生产环境使用):
CLOUDSDK_PYTHON_SSL_CERT_VALIDATE=0 gcloud compute ssh mbadas-dev-bastionhost \ --tunnel-through-iap \ --project=mb-adas-mlops-d-0031 \ --zone=europe-west4-a
3. 更新gcloud到最新版本
旧版本gcloud可能存在M1平台的证书兼容问题,执行更新修复:
gcloud components update
4. 检查代理配置
如果使用了网络代理,先确认gcloud的代理配置是否正确:
gcloud config list proxy
若代理使用自签名证书,需将该证书导入系统钥匙串(打开钥匙串访问,将证书拖入并设置为“始终信任”),或通过CLOUDSDK_PYTHON_SSL_CERT_FILE指定包含该证书的路径。
内容的提问来源于stack exchange,提问作者ZeeshanShareef
相关产品推荐
相关产品推荐

