soarli

Ubuntu SSH 安全加固与效率提升指南:从修改端口到密钥登录
SSH 是我们管理服务器的“大门”。默认情况下,这扇门开在 22 号端口,并且使用密码锁。这意味着互联网上任何一个...
扫描右侧二维码阅读全文
03
2026/02

Ubuntu SSH 安全加固与效率提升指南:从修改端口到密钥登录

SSH 是我们管理服务器的“大门”。默认情况下,这扇门开在 22 号端口,并且使用密码锁。这意味着互联网上任何一个人都知道去哪里敲门,并且可以尝试无数把钥匙(暴力破解)。

本教程将带你完成一次完整的 SSH 升级改造:换个隐蔽的门(改端口) -> 换把指纹锁(密钥登录) -> 门口安个自动炮塔(Fail2Ban) -> 给自己配个万能遥控器(SSH Config)

📋 目录

  1. 现状诊断:查看当前 SSH 端口
  2. 隐身术:安全修改 SSH 端口
  3. 铁桶阵:配置密钥登录并禁用密码
  4. 主动防御:安装 Fail2Ban 防止暴力破解
  5. 极致效率:配置本地 SSH Config 秒连服务器

1. 现状诊断:查看当前 SSH 端口

在动刀之前,先确认现在的 SSH 跑在哪个端口上。

方法 A:查看正在监听的进程(最准确)
这能反映服务当前实际运行的状态:

sudo ss -tulpn | grep ssh

查看输出中 0.0.0.0:22 冒号后面的数字,即为当前端口。

方法 B:查看配置文件

grep -i "Port" /etc/ssh/sshd_config

如果显示 #Port 22,说明使用的是默认端口 22。


2. 隐身术:安全修改 SSH 端口

修改默认端口可以避开绝大多数针对 22 端口的无脑扫描脚本。

⚠️ 警告:在确认新端口能连接之前,千万不要关闭当前的终端窗口!否则一旦配置错误,你会被锁在服务器外面。

步骤 2.1:备份并修改配置

# 备份原配置
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

# 编辑配置
sudo nano /etc/ssh/sshd_config

找到 #Port 22,去掉 # 号,并将 22 改为一个不常用的端口(例如 222210086):
Port 2222

保存退出:Ctrl+O -> Enter -> Ctrl+X

步骤 2.2:放行防火墙 (UFW) —— 最关键的一步

如果开启了防火墙却忘了这一步,重启服务后你就进不去了。

sudo ufw allow 2222/tcp

步骤 2.3:重启服务并验证

sudo systemctl restart ssh

验证方法:保持当前窗口不动,新开一个终端窗口尝试连接:

ssh -p 2222 用户名@服务器IP

如果连接成功,恭喜你,修改完成!你可以选择删除旧的 22 端口规则:sudo ufw delete allow 22/tcp


3. 铁桶阵:配置密钥登录并禁用密码

密码可能被猜到,但密钥文件很难被偷走。这是提升安全性的质变一步。

步骤 3.1:在本地电脑生成密钥

你的电脑(不是服务器)上运行:

ssh-keygen -t rsa -b 4096

一路回车即可。这会在 ~/.ssh/ 下生成 id_rsa (私钥) 和 id_rsa.pub (公钥)。

步骤 3.2:将公钥上传到服务器

你的电脑上运行:

# 注意:如果刚才改了端口,这里要加 -p
ssh-copy-id -p 2222 用户名@服务器IP

步骤 3.3:验证密钥登录

尝试登录,确认是否还需要输入密码:

ssh -p 2222 用户名@服务器IP

如果直接进去了,说明密钥配置成功。

步骤 3.4:禁用密码登录

既然有了钥匙,就封死密码登录的缺口。回到服务器编辑配置:

sudo nano /etc/ssh/sshd_config

修改以下项:

PubkeyAuthentication yes
PasswordAuthentication no

重启 SSH 服务:sudo systemctl restart ssh
现在,没有密钥的人,连输入密码的机会都没有了。


4. 主动防御:安装 Fail2Ban

即使改了端口,执着的黑客可能还是会扫到你。Fail2Ban 可以监控日志,自动拉黑那些不断试错的 IP。

步骤 4.1:安装

sudo apt update
sudo apt install fail2ban

步骤 4.2:配置

复制一份配置文件副本:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

[sshd] 部分,确保修改端口为你的新端口:

[sshd]
enabled = true
port    = 2222   <-- 这里一定要改成你的新端口!
bantime = 3600   # 封禁 1 小时
maxretry = 3     # 试错 3 次就封

步骤 4.3:启动

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

查看被封禁的 IP 列表(战果统计):
sudo fail2ban-client status sshd


5. 极致效率:配置本地 SSH Config

每次都要输入 ssh -p 2222 user@192.168.1.1 太麻烦了?我们可以给服务器起个别名。

你的电脑上,编辑 ~/.ssh/config 文件:

Host myvps
    HostName 192.168.1.100  # 服务器 IP
    User root               # 用户名
    Port 2222               # 端口
    IdentityFile ~/.ssh/id_rsa
    ServerAliveInterval 60  # 防止发呆自动断线

效果

以后只需要输入 ssh myvps 即可秒连服务器!

甚至传输文件也变简单了:scp file.txt myvps:/tmp


总结

经过这一番操作,你的服务器现在的状态是:

  1. 端口隐蔽:不在默认的 22 端口。
  2. 拒绝暴力:只能凭密钥进入,密码尝试直接被拒。
  3. 自动反击:谁敢恶意扫描,Fail2Ban 直接封 IP。
  4. 操作丝滑:一句 ssh myvps 即可连接。

安全与效率并存,这才是 Linux 运维的正确姿势!🚀

最后修改:2026 年 02 月 03 日 02 : 10 PM

发表评论