Google Cloud平台Fedora CoreOS实例SSH连接失败问题求助
问题根因
你使用的是**Fedora CoreOS(FCOS)**镜像,它属于面向容器场景的不可变操作系统,和常规Fedora Server、Debian等通用服务器镜像的设计逻辑不同,默认不兼容GCP原生的元数据SSH密钥自动注入、OS Login功能,因此开箱状态下无法直接通过浏览器SSH、gcloud命令行SSH连接。
解决方案
方案1:新实例创建时预配置(推荐)
FCOS所有系统配置都需要通过Ignition文件在首次启动时注入,操作步骤如下:
- 本地生成SSH密钥对(已有可跳过):
生成的公钥默认存储在ssh-keygen -t rsa -b 4096~/.ssh/id_rsa.pub路径下。 - 编写FCC配置文件(命名为
ssh.fcc):variant: fcos version: 1.4.0 passwd: users: - name: core ssh_authorized_keys: - 替换为你的id_rsa.pub文件完整内容 - 通过fcct工具将FCC配置转为Ignition格式:
fcct --strict ssh.fcc -o ssh.ign - GCP控制台创建实例时,在「元数据」板块添加键为
user-data,值为ssh.ign的完整文本内容,实例创建完成后即可直接用ssh core@实例公网IP连接。
方案2:已创建实例的修复方法
如果实例已经创建无法重建,可以通过启动脚本临时注入密钥:
- 先在GCP控制台停止目标FCOS实例
- 编辑实例配置,在「自定义元数据」中添加两组键值对:
- 键:
startup-script,值:#!/bin/bash mkdir -p /home/core/.ssh chmod 700 /home/core/.ssh echo "替换为你的SSH公钥完整内容" > /home/core/.ssh/authorized_keys chmod 600 /home/core/.ssh/authorized_keys chown -R core:core /home/core/.ssh restorecon -R /home/core/.ssh - 键:
ignition.firstboot,值:0
- 键:
- 保存配置后启动实例,等待2分钟即可通过
ssh core@实例公网IP连接,连接成功后可删除startup-script元数据避免重复执行。
注意事项
- FCOS默认管理用户为
core,不要使用GCP账号对应的用户名尝试连接,所有SSH登录都需要用core用户 - 若需要启用GCP OS Login功能,需要在Ignition配置中额外预装
google-compute-engine-oslogin组件,原生FCOS默认不带该服务 - 不要直接修改FCOS系统路径下的配置文件(如
/etc/ssh/sshd_config),不可变系统的直接修改会在重启后还原,所有永久配置变更都需要通过Ignition或rpm-ostree提交
内容的提问来源于stack exchange,提问作者Dawood Khan Masood
相关产品推荐
相关产品推荐

