MobaXterm 连接 GCP 与 SSH 端口调整
记录 GCP SSH 身份配置、防火墙规则与端口迁移的核验步骤。
阅读设置
一、 首次连接 (密钥配置)
1. 生成密钥 (本地电脑)
- 打开 MobaXterm > Tools > MobaKeyGen。
- 点击 Generate (移动鼠标生成随机数)。
- Key comment: 填入自定义用户名 (如
admin) -> 这也是你登录服务器的用户名。 - Save private key: 保存
.ppk文件到安全位置。 - 复制上方框内的 Public key。
2. 添加公钥 (GCP 控制台)
- 进入 GCP > Compute Engine > VM 实例 > 编辑实例。
- 找到 SSH 密钥 > 添加条目 > 粘贴公钥。
- 保存后,GCP 会自动创建对应的 Linux 用户。
3. 建立连接 (MobaXterm)
- Session > SSH。
- Remote host: 填入 GCP 外部 IP。
- Username: 填入 Key comment 设置的用户名。
- Advanced SSH settings: 勾选 Use private key,选择
.ppk文件。
二、 修改 SSH 端口 (安全加固)
假设将默认端口 22 修改为 2222。
1. 修改系统配置
## 备份配置
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
## 编辑配置
sudo nano /etc/ssh/sshd_config
## 找到 Port 22,改为 Port 2222 (或新增一行 Port 2222)
## Ctrl+O 保存,Ctrl+X 退出
2. 放行防火墙 (两道门都要开)
- 内部防火墙 (UFW):
sudo ufw allow 2222/tcp
## 如果还没启用防火墙,记得先允许 SSH 再 enable
## sudo ufw enable
- 外部防火墙 (GCP VPC):
- GCP 控制台 > VPC 网络 > 防火墙 > 创建防火墙规则。
- 目标:网络中的所有实例 (或指定标签)。
- 来源 IP:
0.0.0.0/0。 - 协议端口:
tcp: 2222。
3. 解决 Ubuntu 新版本 Socket 冲突 (关键步骤)
适用于 Ubuntu 22.10+ 等使用 systemd socket 托管 SSH 的系统。如果不做这一步,端口设置不生效。
## 停止 socket 监听 (解除 systemd 对 22 端口的强占)
sudo systemctl stop ssh.socket
sudo systemctl disable ssh.socket
## 重启 SSH 服务 (让其读取配置文件)
sudo systemctl restart ssh
三、 常用排查命令
1. 查看端口监听状态 判断 SSH 到底跑在哪个端口,以及是否被 Systemd 劫持。
sudo ss -tulpn | grep ssh
## 正确状态:端口显示 2222,users 只有 sshd
## 错误状态:端口显示 22,users 包含 systemd
2. 查看内部防火墙状态
sudo ufw status
3. 本地回环测试 在不关闭旧窗口的情况下,测试新端口是否通畅。
ssh -p 2222 localhost
⚠️ 核心避坑指南
- 不要关闭旧窗口: 在确认新端口(2222)能从外部成功连接之前,永远保持一个旧端口(22)的连接窗口开启。
- GCP 防火墙是隐形的墙: 很多人改了服务器内部配置,却忘了 GCP 网页控制台还需要单独开防火墙。
- Root 权限: GCP 默认不能直接 Root 登录,必须用普通用户登录后执行
sudo su切换。
接下来你可以: 把旧的 22 端口规则从 UFW 和 GCP 防火墙中删除,彻底完成安全加固。
版本与回退
先区分 GCP OS Login 与元数据 SSH 密钥。修改端口前保留旧会话,检查 sshd -t、实际监听端口和安全组;Ubuntu 某些配置由 ssh.socket 管理,不能仅重启 ssh.service 就认定已切换。新端口验证成功后再移除旧规则。