Skip to content

谷歌云 (GCP) 开启 SSH Root 密码登录一键脚本(修复优化版)

很多朋友在使用谷歌云(GCP)或 AWS 等云服务器时,习惯使用 Root 账号和密码直接通过 SSH 工具(如 Xshell、FinalShell)进行连接。但在网上搜到的一些“一键开启 Root”脚本,直接复制粘贴进去却经常报错,或者执行后依然无法使用密码登录。

这往往是因为网页排版导致的换行符断裂、脚本作者拼写遗漏,或者是云厂商强大的 cloud-init 默认配置强行覆盖了我们的修改。

为了彻底解决这些问题,我对网络上流传的一键脚本进行了深度的语法修复与环境兼容优化。

🚀 修复版一键脚本 ​

请在您的云服务器(如通过谷歌云网页端 SSH 终端)中,直接复制以下这一整段命令并回车执行:

txt
sudo bash -c 'set -e; f=/etc/ssh/sshd_config; cp -a "$f" "$f.bak.$(date +%Y%m%d-%H%M%S)"; mkdir -p /etc/ssh/sshd_config.d; printf "%s\n" "PermitRootLogin yes" "PasswordAuthentication yes" "KbdInteractiveAuthentication yes" "UsePAM yes" > /etc/ssh/sshd_config.d/99-enable-root-login.conf; for k in PermitRootLogin PasswordAuthentication KbdInteractiveAuthentication UsePAM; do grep -qiE "^[#[:space:]]*$k[[:space:]]+" "$f" && sed -i -E "s|^[#[:space:]]*$k[[:space:]].*|$k yes|I" "$f" || printf "\n%s yes\n" "$k" >> "$f"; done; sed -i -E "s/PasswordAuthentication[[:space:]]+no/PasswordAuthentication yes/gI" /etc/ssh/sshd_config.d/*.conf 2>/dev/null || true; sed -i -E "s/PermitRootLogin[[:space:]]+(prohibit-password|without-password|no)/PermitRootLogin yes/gI" /etc/ssh/sshd_config.d/*.conf 2>/dev/null || true; passwd root; /usr/sbin/sshd -t; systemctl restart ssh || systemctl restart sshd || service ssh restart; echo -e "\nDone. Login with root, port 22."'

💡 脚本优化与修复说明 ​

相较于原版残缺脚本,本次优化主要解决了以下几个核心问题(分条列出):

  1. 修复换行与截断错误: 修正了原版脚本中因网页复制粘贴产生的异常换行(例如配置项与文件名中间莫名被截断),确保单行命令能被系统连贯且正确地执行。
  2. 修正核心参数拼写: 原脚本漏掉了开启密码验证的核心参数 PasswordAuthentication(错写成了 Authentication)。如果缺少此项,即使开启了 Root 权限,服务器也会拒绝密码验证,现已完全补全。
  3. 清除隐形乱码字符: 清理了隐藏在原代码中的特殊空格字符(Non-breaking space)。这些肉眼看不见的字符会导致 Linux 的 Bash 终端在解析命令时直接报错崩溃。
  4. 深度兼容云厂商环境(防覆盖): 这是最关键的一步。由于 SSHD 配置文件采用“先匹配先优先生效”的原则,而谷歌云(GCP)等厂商默认会在 /etc/ssh/sshd_config.d/ 目录下生成如 50-cloud-init.conf 的文件来强制禁用密码登录。本脚本新增了批量匹配替换逻辑,强制将子目录中所有“禁止密码”或“禁止 Root”的规则改为 yes,彻底清除了这些“拦路虎”。
  5. 安全便捷的密码设置: 脚本执行到最后,会自动调用 passwd root 命令。此时终端会提示您输入并确认两次新的 Root 密码。设置完成后,脚本会自动测试配置文件语法并重启 SSH 服务,立即生效。

使用提示: 看到终端输出 Done. Login with root, port 22. 后,您就可以使用刚刚设置的密码,通过第三方 SSH 客户端以 Root 身份登录您的云服务器了。

内容由 WordPress 管理,静态页面由 VitePress 生成