Cloud Build执行gcloud compute ssh时无法添加主机到已知主机列表问题
问题原因及解决办法
核心问题
你在操作里犯了一个关键错误:把google_compute_known_hosts当成目录创建了,但它本质是一个需要写入主机指纹的文件。gcloud ssh尝试往这个路径写入内容时,发现是目录而非文件,自然会抛出警告。
你的操作问题拆解
mkdir -p /builder/home/.ssh/google_compute_known_hosts创建的是目录,不是文件,这直接导致gcloud无法写入主机信息- 后续给这个目录加权限的操作完全无效,因为目标对象本身就错了
正确操作步骤
- 先确保
.ssh目录存在并设置安全权限(SSH标准要求):mkdir -p /builder/home/.ssh && chmod 700 /builder/home/.ssh - 创建空的
google_compute_known_hosts文件并设置可写权限:touch /builder/home/.ssh/google_compute_known_hosts && chmod 664 /builder/home/.ssh/google_compute_known_hosts - 执行ssh命令:
gcloud compute ssh instance_name --ssh-key-file=~/root/.ssh/id_rsa --zone=zone --command='/bin/sh /opt/pull.sh'
额外检查点
- 确认Cloud Build运行的用户对
.ssh目录和文件有读写权限,你设置的g+w要确保用户属于对应的组 - 检查
--ssh-key-file路径是否正确:Cloud Build环境中~/root/.ssh/id_rsa是否存在?如果是builder用户的密钥,路径可能是/builder/home/.ssh/id_rsa,需核实
内容的提问来源于stack exchange,提问作者Béranger
相关产品推荐
相关产品推荐

