尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Ubuntu SSH 端口修改指南

Ubuntu SSH 端口修改指南
📅 发布时间:2026/7/17 5:32:28

项目说明
适用系统Ubuntu 24.04 LTS
SSH 服务OpenSSH Server(系统默认安装)
原端口22
新端口36000(示例,可根据需要自定义)
修改方式常规方法:修改/etc/ssh/sshd_config+ 重启服务
备选方案systemd 覆写(常规方法失效时使用)

一、背景说明

修改 SSH 默认端口(22)是服务器安全加固的常见措施,可以有效:

  • 减少暴力破解攻击(扫描脚本默认只扫 22 端口)
  • 降低日志中的无效登录尝试数量
  • 提升服务器的整体安全性

二、前提条件

在开始修改前,请确保:

  • 你拥有服务器的root 权限或sudo权限。
  • 当前 SSH 连接保持开启(非常重要!)。
  • 你已准备好备用连接方式(如云控制台 VNC),以防修改失误导致无法登录。

三、常规修改方法(推荐优先使用)

适用场景:大多数情况,仅修改配置文件即可生效。

3.1 检查当前 SSH 端口

sudoss-tlnp|grepssh

默认输出:

LISTEN 0 4096 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=xxx,fd=3)) LISTEN 0 4096 [::]:22 [::]:* users:(("sshd",pid=xxx,fd=4))

3.2 修改 SSH 配置文件

sudovim/etc/ssh/sshd_config

找到#Port 22这一行,修改为:

Port 36000 # 禁止root远程登录 PermitRootLogin no # 关闭密码登录(有密钥再开) PasswordAuthentication no # 禁用空密码 PermitEmptyPasswords no # 最大认证尝试次数防暴力破解 MaxAuthTries 3

注意:

  • 如果文件中有多个Port行,只保留一个,避免冲突。
  • 行首不能有#(注释符)。

快速命令(如果你更习惯用命令操作):

# 删除所有已有的 Port 行sudosed-i'/^Port/d'/etc/ssh/sshd_config# 添加新端口echo"Port 36000"|sudotee-a/etc/ssh/sshd_config

3.3 测试配置文件语法

sudosshd-t
  • 无输出:配置正确,可以继续。
  • 有错误输出:根据提示修复后再重启。

3.4 重启 SSH 服务

sudosystemctl restartssh

3.5 验证新端口监听

sudoss-tlnp|grepssh

预期输出:

LISTEN 0 4096 0.0.0.0:36000 0.0.0.0:* users:(("sshd",pid=xxx,fd=3)) LISTEN 0 4096 [::]:36000 [::]:* users:(("sshd",pid=xxx,fd=4))

3.6 验证配置加载

sudosshd-T|grep-E"^port|^listenaddress"

预期输出:

port 36000 listenaddress [::]:36000 listenaddress 0.0.0.0:36000

四、systemd 覆写方案(备选方案)

4.1 什么时候使用?

当常规方法修改后,出现以下情况时,需要使用 systemd 覆写:

检查项正常结果异常结果(需使用覆写方案)
sudo sshd -T | grep portport 36000port 22(配置未加载)
sudo ss -tlnp | grep ssh0.0.0.0:360000.0.0.0:22(仍监听旧端口)
sudo systemctl status sshactive (running)正常,但端口未变

典型场景:

  • 配置文件中的Port已正确修改,但重启后仍监听旧端口。
  • sshd -T显示新端口,但ss显示旧端口。
  • systemd 缓存或残留进程导致常规方法失效。

4.2 systemd 覆写操作步骤

步骤 1:创建 systemd 覆写文件
sudosystemctl editssh

在弹出的编辑器中粘贴以下内容:

[Service] ExecStart= ExecStart=/usr/sbin/sshd -D -p 36000

参数说明:

配置项说明
ExecStart=(空行)清空默认的启动命令
ExecStart=/usr/sbin/sshd -D -p 36000指定新启动命令,-p 36000强制绑定端口

保存并退出(Ctrl+O,Ctrl+X)。

步骤 2:重载 systemd 配置
sudosystemctl daemon-reload
步骤 3:重启 SSH 服务
sudosystemctl restartssh
步骤 4:验证端口监听
sudoss-tlnp|grepssh

预期输出显示0.0.0.0:36000。

步骤 5:确认覆写文件已创建
ls-la/etc/systemd/system/ssh.service.d/

应看到override.conf文件。

4.3 何时删除 systemd 覆写?

当以下情况发生时,可以删除覆写文件,恢复到常规配置模式:

  • 你确认常规方法已正常工作(即sshd_config中的Port已生效)。
  • 你想恢复到标准的启动方式,避免 systemd 覆写干扰后续配置变更。

删除方法:

sudorm-f/etc/systemd/system/ssh.service.d/override.confsudosystemctl daemon-reloadsudosystemctl restartssh

五、防火墙配置

5.1 Ubuntu UFW 防火墙

# 放行新端口sudoufw allow36000/tcp# 重载防火墙sudoufw reload# 查看已放行端口sudoufw status|grep36000

建议:在确认新端口可用前,不要删除 22 端口的放行规则。

5.2 云服务商安全组

如果服务器在云上(阿里云、腾讯云、AWS、华为云等),需在控制台安全组中添加入站规则:

参数值
协议TCP
端口36000
来源0.0.0.0/0(或指定 IP 段)

六、测试新端口连接

这是最关键的一步!请务必按以下顺序操作:

6.1 保持当前 SSH 窗口打开

不要关闭当前已连接的 SSH 窗口,否则如果新端口配置失败,你将失去对服务器的访问。

6.2 另开一个新终端测试

ssh-p36000用户名@服务器IP

如果使用密钥登录:

ssh-p36000-i~/.ssh/id_rsa 用户名@服务器IP

成功标志:输入密码后正常登录,看到 shell 提示符。

6.3 如果新端口连接失败

立即在当前窗口中检查并修复:

# 检查服务状态sudosystemctl statusssh# 检查端口监听sudoss-tlnp|grepssh# 查看日志sudojournalctl-ussh-n20

七、确认成功后清理旧端口(可选)

确认可以通过新端口正常登录后,你可以选择移除 22 端口的防火墙规则。

sudoufw delete allow22/tcpsudoufw reload

⚠️安全建议:生产环境建议先保留 22 端口 1~2 天,确认新端口完全稳定后再关闭,避免因配置遗漏导致失联。


八、回滚方案(应急)

8.1 回滚常规配置

如果新端口无法连接,且当前 SSH 窗口仍保持打开,立即执行以下命令恢复:

# 恢复配置文件中的 Port 22sudosed-i'/^Port/d'/etc/ssh/sshd_configecho"Port 22"|sudotee-a/etc/ssh/sshd_config# 测试配置sudosshd-t# 重启 SSH 服务sudosystemctl restartssh# 验证sudoss-tlnp|grepssh

8.2 回滚 systemd 覆写(如果使用过)

sudorm-f/etc/systemd/system/ssh.service.d/override.confsudosystemctl daemon-reloadsudosystemctl restartssh

然后用旧方式连接:

ssh用户名@服务器IP

九、两种方法对比与选择

对比项常规方法systemd 覆写方案
操作复杂度低(仅修改一个配置文件)中(需创建 systemd 覆写)
适用场景大多数情况常规方法失效时
维护性好(配置集中在sshd_config)一般(配置分散在两处)
优先级优先使用备用方案
何时使用首次修改 SSH 端口sshd -T和ss显示不一致时

选择建议:

  1. 首次修改:直接使用常规方法。
  2. 常规方法失败:出现sshd -T显示新端口但ss显示旧端口时,使用 systemd 覆写。
  3. 恢复常规:使用覆写成功后,可考虑删除覆写文件,恢复正常模式。

十、完整命令汇总

常规方法

# 1. 修改配置sudosed-i'/^Port/d'/etc/ssh/sshd_configecho"Port 36000"|sudotee-a/etc/ssh/sshd_config# 2. 测试配置sudosshd-t# 3. 重启服务sudosystemctl restartssh# 4. 查看监听sudoss-tlnp|grepssh# 5. 防火墙放行sudoufw allow36000/tcpsudoufw reload# 6. 测试连接(另开终端)ssh-p36000用户名@服务器IP

systemd 覆写方案(备选)

# 1. 创建覆写文件sudosystemctl editssh# 粘贴:# [Service]# ExecStart=# ExecStart=/usr/sbin/sshd -D -p 36000# 2. 重载并重启sudosystemctl daemon-reloadsudosystemctl restartssh# 3. 验证sudoss-tlnp|grepssh

十一、常见问题排查

问题现象可能原因解决方法
Connection refused防火墙/安全组未放行新端口检查 UFW 和云安全组规则
ssh -T显示port 22而非新端口配置文件未正确保存检查/etc/ssh/sshd_config中是否有Port 36000且未被注释
ss显示 22 而非 36000systemd 缓存或残留进程使用 systemd 覆写方案
重启 SSH 后无法连接配置错误导致服务启动失败使用云控制台 VNC 登录,执行回滚方案
端口被其他服务占用与其他服务端口冲突更换端口号,或sudo ss -tlnp | grep 36000查看占用进程

十二、安装信息汇总

项目值
SSH 版本OpenSSH Server
原端口22
新端口36000(示例)
配置文件/etc/ssh/sshd_config
systemd 覆写路径/etc/systemd/system/ssh.service.d/override.conf
测试配置sudo sshd -t
服务管理sudo systemctl restart ssh
测试连接ssh -p 36000 user@IP
防火墙规则sudo ufw allow 36000/tcp

文档版本:3.0
适用系统:Ubuntu 24.04 LTS
最后更新:2026-07-16

相关新闻

  • Ventoy多系统启动U盘制作与优化全攻略
  • ABAP Web Service集成SAML 2.0:从配置到用户映射的完整实战指南
  • 一文读懂 | 欧盟《网络弹性法案》(CRA)

最新新闻

  • Cosmos 3如何通过物理AI技术提升开发效率
  • Ubuntu 16.04核心命令与系统管理实战指南
  • Windows启动故障诊断:SrtTrail.txt日志解析与应用
  • Mac读写NTFS硬盘的终极解决方案与性能优化
  • Rider 2025:.NET 开发者的生产力核弹与跨语言工程实践
  • GLM Coding Plan抢购现象解析与AI编程助手应用指南

日新闻

  • 佛山青少年训练营推荐:军博营地实力顶尖 - 秋山寄远
  • 如何快速上手PvZ2 Gardendless:免费Web版植物大战僵尸2完整指南
  • jiuwen-deepsearch核心功能详解:规划-检索-反思三合一智能工作流

周新闻

  • IX9104 PCIe5.0 高速交换芯片@ACP#完整规格 + 应用场景总结
  • Unity游戏集成Coze智能体:实现NPC智能对话与知识库联动
  • SAP EPIC 建行回单查询:从标准类CL_EPIC_EXAMPLE_CN_CCB_GHTD到Z类的5处关键修改

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号