GCP开启SSH登录
这是一份针对 Google Cloud (GCP) 服务器开启 Root 密码登录 的完整操作教程。
这个问题之所以顽固,是因为 SSH 的配置文件采取 “先入为主” 原则。你虽然在主文件里改了 yes,但文件头部引入(Include)的云平台默认配置先加载了 no,导致你的修改无效。
请严格按照以下步骤操作,100% 解决问题。
第一阶段:通过网页后台进入服务器
因为 SSH 目前连不上,必须走“后门”。
- 打开 Google Cloud Console。
- 找到你的 VM 实例列表。
- 点击该实例所在行的 “SSH” 按钮。
- 这会弹出一个新的浏览器窗口(Web Terminal)。
第二阶段:强制覆盖配置(核心步骤)
在弹出的 Web Terminal 黑色窗口中操作:
1. 切换到 Root 身份
为了避免权限不足,先切换成超级管理员:
sudo -i
2. 创建一个高优先级的配置文件
我们不去改动复杂的原文件,而是新建一个文件名以 01- 开头的配置。SSH 会按字母顺序加载,这样我们的配置就会最先生效,从而无视后面的限制。
复制并运行以下整段命令:
echo -e "PasswordAuthentication yes\nPermitRootLogin yes" > /etc/ssh/sshd_config.d/01-custom-force.conf
原理说明:我们在
/etc/ssh/sshd_config.d/下创建了一个文件。因为文件名是01开头,它会比默认的50-cloud-init.conf更早被读取。SSH 只要读到了第一条PasswordAuthentication yes,就会忽略后面所有的no。
3. 设置 Root 密码
既然要用密码登录,你必须给 root 账户设置一个密码:
passwd root
(输入时屏幕不会显示字符,输入完回车,再次输入确认。)
4. 重启 SSH 服务
让刚才的修改生效:
service sshd restart
第三阶段:回到本地电脑验证
现在,关闭网页窗口,回到你自己电脑的终端(Terminal/PowerShell),执行:
ssh root@IP
预期结果:
- 系统不再提示
Permission denied (publickey)。 - 系统提示
root@IP's password:。 - 输入你在第二阶段设置的密码,回车即可登录。
⚠️ 安全警告(必读)
你现在的操作(开启 Root 远程登录 + 开启密码认证)是最不安全的配置组合,尤其你的 IP 是公开暴露的。
建议后续加固措施:
- 设置极复杂的密码:包含大小写、数字、符号,长度 16 位以上。
- 安装 Fail2Ban:防止暴力破解。
- Debian/Ubuntu:
apt update && apt install fail2ban -y - CentOS:
yum install fail2ban -y
- Debian/Ubuntu:
- 不要长期开放:测试完或配置完环境后,建议把
/etc/ssh/sshd_config.d/01-custom-force.conf里的PasswordAuthentication yes改回no,改回使用密钥登录。