天翼测评网天翼测评网天翼测评网

欢迎光临
我们一直在努力

Linux系统SSH端口修改教程:安全高效指南

Linux系统修改SSH默认22端口完整教程(安全高效版)

Linux系统修改SSH默认22端口完整教程(安全高效版)

SSH(Secure Shell)是Linux系统远程管理的核心工具,默认使用22端口进行通信。这与SSH息息相关。这与Linux系统息息相关。这是SSH的重要体现。由于22端口是公开的默认端口,容易遭受暴力破解、端口扫描等恶意攻击,因此修改SSH默认端口是提升服务器安全性的基础且关键操作。了解SSH有助于把握这一要点。这是Linux系统的重要体现。SSH的价值正在于此。本文将适用于CentOS、Ubuntu、Debian等主流Linux发行版,详细讲解修改SSH 22端口的完整步骤、注意事项及常见问题排查,兼顾新手友好性和实操性。这与SSH息息相关。了解Linux系统有助于把握这一要点。

一、修改前准备工作

在修改端口前,需做好以下准备,避免出现远程连接中断、配置失效等问题,确保操作安全可控。Linux系统的价值正在于此。
  • 权限准备:操作需使用root权限(或具有sudo权限的用户),所有修改配置文件、重启服务的命令均需提升权限,避免因权限不足导致操作失败。这与Linux系统息息相关。

  • 端口选择:选择新的SSH端口,需遵循以下原则:端口号范围为1024-65535(1-1023为系统知名端口,易与其他服务冲突,不推荐使用);优先选择冷门端口(如2222、2022、22022等),降低被扫描的概率;避免使用已被其他服务占用的端口(如80、443、3306等)。

  • 连接备份:修改过程中,切勿关闭当前SSH会话,需新开一个终端窗口进行操作测试。若修改出错,可通过原会话回滚配置,避免远程连接彻底中断(云服务器可通过控制台登录兜底)。

  • 工具准备:需使用文本编辑器(如vim、nano)编辑配置文件,大部分Linux系统默认自带,若未安装可通过对应包管理器安装(如Ubuntu安装nano:sudo apt install nano)。

二、详细修改步骤(通用版)

步骤1:备份SSH配置文件(关键!)

SSH的核心配置文件为/etc/ssh/sshd_config,修改前先备份该文件,若后续配置出错,可快速恢复默认设置,避免服务瘫痪。执行以下命令备份:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
备份完成后,可通过ls命令验证备份文件是否存在:ls /etc/ssh/sshd_config.bak,若显示文件名称则备份成功。

步骤2:编辑SSH配置文件,修改端口

使用文本编辑器打开sshd_config配置文件,以vim为例(新手可使用nano,操作更简单):
# 使用vim编辑配置文件
sudo vim /etc/ssh/sshd_config
# 若使用nano,执行以下命令
# sudo nano /etc/ssh/sshd_config
打开文件后,查找“Port 22”相关配置(通常在文件前10-20行),默认情况下该配置可能被注释(前面带有#号),具体分为两种情况处理:
  1. 若找到“#Port 22”:删除前面的#号(取消注释),将22改为选定的新端口(如2222),修改后为“Port 2222”。

  2. 若未找到“Port 22”:在文件开头或“#Port 22”注释行下方,新增一行“Port 2222”(2222替换为你的新端口)。

⚠️ 注意:建议先保留22端口,新增一行新端口(如“Port 22”和“Port 2222”同时存在),待测试新端口可正常连接后,再删除或注释22端口,避免一次性修改导致连接中断。
编辑完成后,保存并退出编辑器:
  • vim编辑器:按Esc键,输入“:wq”,按Enter键(w表示保存,q表示退出)。

  • nano编辑器:按Ctrl+O(保存),按Enter确认,再按Ctrl+X(退出)。

修改后,可通过以下命令验证配置文件语法是否正确,避免因语法错误导致SSH服务无法启动:
sudo sshd -t
若执行后无任何输出,说明配置文件语法正确;若有报错,需根据报错信息修改对应错误(如端口格式错误、配置项拼写错误)。

步骤3:配置防火墙,放行新端口

修改SSH端口后,系统防火墙(如firewalld、ufw、iptables)默认会拦截新端口的连接,需手动放行新端口,否则无法通过新端口远程连接服务器。不同Linux发行版使用的防火墙工具不同,分别对应以下操作:

情况1:CentOS/RHEL系统(使用firewalld防火墙)

# 放行新端口(以2222为例,tcp协议,永久生效)
sudo firewall-cmd --permanent --add-port=2222/tcp
# 重新加载防火墙规则,使配置生效
sudo firewall-cmd --reload
# 验证新端口是否已放行
sudo firewall-cmd --list-ports
若输出中包含“2222/tcp”,说明防火墙放行成功。若后续确认新端口可用,可删除22端口的放行规则(可选):sudo firewall-cmd --permanent --remove-port=22/tcp,再重新加载防火墙。

情况2:Ubuntu/Debian系统(使用ufw防火墙)

# 放行新端口(以2222为例,tcp协议)
sudo ufw allow 2222/tcp
# 重新加载防火墙(若ufw未启用,先执行sudo ufw enable启用)
sudo ufw reload
# 验证防火墙状态及端口放行情况
sudo ufw status
输出中显示“2222/tcp ALLOW Anywhere”,即为放行成功。删除22端口放行规则(可选):sudo ufw delete allow 22/tcp。

情况3:通用(使用iptables防火墙)

# 放行新端口(以2222为例,tcp协议)
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
# 保存iptables规则(避免重启系统后失效)
sudo iptables-save > /etc/iptables/rules.v4
# 验证规则是否生效
sudo iptables -L -n
删除22端口规则(可选):sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT,再保存规则。

补充:云服务器需配置安全组

若为云服务器(阿里云腾讯云、华为云等),除了配置系统防火墙,还需在云平台控制台的“安全组”中放行新SSH端口(入方向,tcp协议),否则外部无法通过新端口连接服务器。操作方法:登录云控制台 → 找到对应服务器的安全组 → 新增入方向规则,端口范围填写新端口(如2222/2222),源地址设置为0.0.0.0/0(允许所有IP访问,或根据需求限制特定IP)。

步骤4:处理SELinux限制(CentOS/RHEL系统专属)

CentOS、RHEL等系统默认启用SELinux(安全增强模块),SELinux有严格的端口访问策略,默认仅允许SSH服务使用22、2222、2022等少数端口,若新端口不在允许范围内,会导致SSH服务无法绑定新端口,出现“Permission denied”错误。
执行以下操作,配置SELinux允许新SSH端口:
# 1. 检查当前SELinux状态(若显示enforcing,说明已启用)
sudo sestatus
# 2. 查看SELinux允许的SSH端口
sudo semanage port -l | grep ssh
# 3. 新增新端口(以2222为例)到SELinux的SSH端口列表
sudo semanage port -a -t ssh_port_t -p tcp 2222
# 若提示semanage命令不存在,先安装相关工具
# sudo yum install policycoreutils-python-utils (CentOS/RHEL)
# sudo apt install policycoreutils-python-utils (Ubuntu/Debian)
# 4. 再次验证,确认新端口已添加
sudo semanage port -l | grep ssh
若无需长期启用SELinux,也可临时关闭(不推荐长期关闭,影响系统安全):sudo setenforce 0,永久关闭需编辑/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,重启服务器生效。

步骤5:重启SSH服务,应用配置

所有配置修改完成后,需重启SSH服务,使新端口生效。不同系统的SSH服务名略有差异,执行对应命令:
# 通用命令(systemd系统,大部分主流系统适用)
sudo systemctl restart sshd
# 部分Ubuntu/Debian系统,服务名为ssh,执行:
sudo systemctl restart ssh
# 验证SSH服务状态,确认重启成功
sudo systemctl status sshd
若状态显示“active (running)”,说明服务重启成功;若启动失败,可通过sudo journalctl -u sshd查看错误日志,排查配置问题(如端口冲突、SELinux限制)。

步骤6:测试新端口连接(关键验证)

AIPnye">重启SSH服务后,需测试新端口是否能正常连接,确保配置无误,具体操作如下:
  1. 保持原SSH会话不关闭(防止测试失败无法回滚),新开一个终端窗口。

  2. 执行连接命令,指定新端口(以2222为例,替换为你的新端口):        ssh 用户名@服务器IP -p 2222

  3. 输入服务器密码,若能成功登录,说明新端口配置生效;若登录失败,需排查防火墙、SELinux、安全组等配置。

  4. CDNrsvcB1lDctjW8nbb" data-list="number">

    测试成功后,可回到sshd_config配置文件,删除或注释“Port 22”行,再次重启SSH服务,彻底关闭22端口(可选,建议测试稳定后再操作)。

三、常见问题排查(新手必看)

问题1:修改端口后,SSH服务无法启动

核心原因:配置文件语法错误、端口被占用、SELinux限制。
  • 排查方法1:执行sudo sshd -t,检查配置文件语法,根据报错修改错误(如端口号填写非数字、配置项拼写错误)。

  • 排查方法2:检查新端口是否被其他服务占用,执行sudo netstat -tulnp | grep 新端口(如2222),若有输出,说明端口被占用,需更换新端口。

  • 排查方法3:CentOS/RHEL系统,检查SELinux是否允许新端口,执行sudo semanage port -l | grep ssh,若新端口不在列表中,重新执行添加SELinux端口的命令。

问题2:新端口无法连接,提示“Connection refused”或“超时”

核心原因:防火墙未放行新端口、云服务器安全组未配置、SSH服务未监听新端口。
  • 排查方法1:检查系统防火墙规则,确认新端口已放行(对应步骤3的验证命令)。

  • 排查方法2:云服务器需检查安全组,确认新端口入方向已放行。

  • 排查方法3:检查SSH服务是否监听新端口,执行sudo ss -tlnp | grep sshd,若输出中包含新端口,说明监听正常;若不包含,重新检查sshd_config配置并重启服务。

问题3:忘记新端口,无法远程连接

解决方案:通过云服务器控制台(或本地终端)登录服务器,执行sudo cat /etc/ssh/sshd_config | grep Port,即可查看当前SSH端口。

问题4:修改端口后,密钥登录失效

核心原因:密钥登录配置未启用,与端口修改无关。
解决方案:编辑sshd_config文件,确保以下配置项未被注释,且值正确:
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
修改后重启SSH服务,密钥登录即可恢复正常。

四、安全优化补充建议

修改SSH端口只是基础安全防护,结合以下操作,可进一步提升服务器安全性:
  • 禁用密码登录,启用密钥登录:生成SSH密钥对,将公钥上传到服务器,修改sshd_config文件,设置PasswordAuthentication no,重启SSH服务,避免密码被暴力破解。

  • 限制登录用户:修改sshd_config文件,添加AllowUsers 用户名(如AllowUsers root test),仅允许指定用户远程登录。

  • 限制登录IP:通过防火墙或安全组,仅允许特定IP地址访问SSH端口,避免无关IP扫描攻击。

  • 定期更新系统和SSH服务:执行sudo yum update(CentOS)或sudo apt update && sudo apt upgrade(Ubuntu),修复系统漏洞和SSH服务安全隐患。

五、总结

Linux系统修改SSH 22端口的核心流程为:备份配置文件 → 编辑sshd_config修改端口 → 配置防火墙放行新端口 → 处理SELinux限制(CentOS/RHEL专属) → 重启SSH服务 → 测试新端口连接。整个过程的关键是“备份配置”和“保留原会话测试”,避免因操作失误导致远程连接中断。
本文适用于主流Linux发行版,不同系统的细微差异已明确标注,新手可按照步骤逐步操作,若遇到问题可参考常见问题排查部分,或查看系统日志定位错误。修改完成后,服务器将有效降低被暴力破解的风险,提升远程管理的安全性。


此内容由AI生成

赞(666)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。