> ## Content Index
> Fetch the complete content index at: https://tbbbk.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Ubuntu 24.04 VPS 上手第一件事：改 SSH 端口和安全加固
- URL: https://tbbbk.com/ubuntu-24-04-change-ssh-port/
- Published: 2025-12-19T17:17:00.000Z
- Updated: 2026-01-30T09:06:59.000Z
- Author: TuBaiBai
- Tags: VPS 与云服务, 随手记, #Import 2026-07-20 07:13

刚开了一台 Ubuntu 24.04 的 VPS？别急着跑业务，先把安全搞定。暴露在公网上的服务器，每时每刻都有机器人在扫描默认的 22 端口，试图暴力破解。所以，修改默认端口和加固系统是每个 VPS 用户的必修课。

24.04 这版本改 SSH 端口比以前麻烦了一点，因为它默认用了 `systemd socket activation` 来管理 SSH。不过别慌，跟着我的步骤来，一次搞定。

> **黄金法则始终保持一个当前已登录的 SSH 会话不要断开**

---

### 第一部分：跟 22 端口说再见

我们的目标是把默认的 `22` 端口改成一个不常用的，比如 `2222`。

#### 步骤 1: 编辑 sshd\_config

这是老规矩，先告诉 SSH 服务本身你想用哪个端口。

```bash
sudo nano /etc/ssh/sshd_config
```

找到 `#Port 22` 这一行，去掉 `#` 注释，然后把 `22` 改成你的新端口。

```bash
Port 2222
```

改完后按 `Ctrl+X`，然后按 `Y` 回车保存。

#### 步骤 2: 配置 systemd socket (24.04 关键步骤)

这是 24.04 的新花样。光告诉 SSH 不够，还得告诉 `systemd` 这个大管家，让它去监听新端口。

首先，创建覆盖配置的目录：

```bash
sudo mkdir -p /etc/systemd/system/ssh.socket.d
```

然后，创建一个新的配置文件 `listen.conf`：

```bash
sudo nano /etc/systemd/system/ssh.socket.d/listen.conf
```

把下面的内容粘贴进去：

```
[Socket]
ListenStream=
ListenStream=2222
```

**解释一下这两行：**

- `ListenStream=`：第一行留空，作用是清空默认监听的 22 端口。**这行不能少！**
- `ListenStream=2222`：第二行写上你的新端口。

保存退出。

#### 步骤 3: 重载服务并检查

让 `systemd` 重新加载配置，然后重启 `ssh.socket`。

```bash
sudo systemctl daemon-reload
sudo systemctl restart ssh.socket
```

现在，检查一下新端口是否已经在监听了：

```bash
sudo ss -tuln | grep 2222
```

如果你看到类似下面的输出，说明成功了： `tcp LISTEN 0 4096 0.0.0.0:2222 0.0.0.0:*`

#### 步骤 4: 放行防火墙

端口改了，防火墙得跟上。这里以 `UFW` 为例。

```bash
# 允许新端口的流量
sudo ufw allow 2222/tcp
（可选但推荐）禁止旧的 22 端口
sudo ufw delete allow 22/tcp
重载防火墙规则

```

**最后一步：测试！** 新开一个终端，用新端口登录你的服务器： `ssh your_user@your_ip -p 2222`

确认能成功登录后，你就可以安心地关闭之前的会话了。

### 第二部分：给你的 VPS 穿上盔甲

改端口只是第一步，下面这几项能让你的 VPS 安全性提升几个数量级。

#### 1\. 禁用密码，只用密钥登录

这是安全的第一道防线，也是最重要的一道。密码登录就是给暴力破解送人头。

首先，确保你已经把本地的公钥上传到服务器了。如果没有，在**你的本地电脑**上执行：

```bash
# 如果没有密钥对，先生成一个
ssh-keygen -t ed25519
把公钥复制到服务器（注意换成你的新端口）

```

然后，**在服务器上**编辑 `sshd_config`：

```bash
sudo nano /etc/ssh/sshd_config
```

修改或确认以下两项：

```
PasswordAuthentication no
PubkeyAuthentication yes
```

重启 SSH 服务使其生效：

```bash
sudo systemctl restart ssh
```

#### 2\. 禁止 root 用户直接登录

别用 root 用户直接浪，养成好习惯，用普通用户登录再 `sudo` 提权。

继续编辑 `sshd_config`：

```bash
sudo nano /etc/ssh/sshd_config
```

修改或添加这一行：

```bash
PermitRootLogin no
```

重启 SSH 服务：

```bash
sudo systemctl restart ssh
```

#### 3\. 安装并配置 Fail2Ban

Fail2Ban 是一个自动看门狗，谁老是输错密码敲你家门，它就把谁的 IP 关在门外一段时间。

**安装：**

```bash
sudo apt update
sudo apt install fail2ban
```

**配置：** Fail2Ban 的最佳实践是不要直接改 `jail.conf`，而是创建一个 `jail.local` 文件来覆盖它。

```bash
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
```

然后编辑 `jail.local`：

```bash
sudo nano /etc/fail2ban/jail.local
```

用 `Ctrl+W` 搜索 `[sshd]`，找到 SSH 的配置部分，修改成这样：

```
[sshd]
enabled = true
port    = 2222      # 重点：改成你的新 SSH 端口
maxretry = 3        # 3次失败就封
bantime  = 1h       # 封1小时
```

**启动并检查：**

```bash
# 重启 Fail2Ban 服务
sudo systemctl restart fail2ban
检查 sshd jail 的状态

```

如果一切正常，你会看到被激活的 jail 详情。

#### 4\. 保持系统更新

保持系统最新能堵上很多已知的安全漏洞，养成定期更新的好习惯。

```bash
sudo apt update && sudo apt upgrade -y
sudo apt autoremove -y
```

可以考虑用 `unattended-upgrades` 实现安全更新的自动化，这里就不展开了。

---

搞定以上这些，你的 VPS 基本上就从一个裸奔的新手村装备，升级到了可以上战场的骑士级别。安全无小事，多一分谨慎，少一分风险。