CentOS7更改默认SSH端口与配置指南

2025-04-23 17:50

本文主要是介绍CentOS7更改默认SSH端口与配置指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍...

引言

SSH(Secure Shell)是 Linux 服务器远程管理的核心工具,其默认监听端口为 22。由于端口 22 众所周知,这也使得服务器容易受到自动化扫描和暴力 破解攻击。虽然更改 SSH 默认端口只是安全加固的一种辅助手段,但它能有效地降低被自动化攻击工具扫描的风险。

本文将系统性地介绍如何在 CentOS 7 系统中安全地更改 SSH 端口,解决 SELinux 和防火墙相关配置,确保远程访问不中断。同时,我们还会探讨提升 SSH 安全性的更有效搭配方案。

为什么要更改 SSH 默认端口?

  • 减少自动扫描攻击:大量恶意机器人默认扫描 22 端口,通过更改端口可以减少被扫描的概率。
  • 防止大规模暴力 破解:将 SSH 端口调整到非标准端口可以有效防止针对 22 端口的暴力 破解攻击。
  • 配合其他安全措施提升防御层次:虽然更改端口并不能阻止有决心的攻击者扫描,但这是安全“深度防御”策略的一部分。

提示:更安全的 SSH 防护手段是使用基于密钥的无密码登录、限制 IP 白名单、以及开启两步验证等措施。

步骤详解:如何更改 CentOS 7 的 SSH 默认端口

1. 备份 SSH 配置文件

在动手修改前,请务必备份当前配置,防止误修改导致无法登录救援。

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

2. 修改 SSH 配置文件,增加或更改端口

编辑 SSH 服务配置文件:

sudo vi /etc/ssh/sshd_config

找到 Port 行,默认是:

Port 22

您可以采用如下两种策略:

  • 增加新端口,保留 22 端口(安全切换期)
Port 22
Port 2244
  • 直接修改成新端口,禁用 22
Port 2244

修改后,保存并退出编辑器

安全建议:初次更改建议先添加新端口,确保能够成功通过新端口登录,再关闭 22,以免被锁定。

3. 配置 SELinux 允许新 SSH 端口

CentOS 7 默认开启 SELinux,且默认只开放 22 端口用于 SSH 服务,需添加新端口:

sudo semanage port -a -t ssh_port_t -p tcp 2244
  • 如果出现 semanage: command not found 错误,安装必需包:
sudopython yum -y install policycoreutils-python
  • 重复执行添加端口命令。

提示
也可以临时关闭 SELinux,但不推荐,因为会降低系统整体安全等级:

sudo setenforce 0

4. 配置防火墙(Firewalld)放行新端口

确保新端口能通过防火墙访问:

sudo firewall-cmd --permanent --zone=public --add-port=2244/tcp

若出现 FirewallD is not running,先启动防火墙:

sudo systemctl enable firewaphplld
sudo systemctl start firewalld

确认防火墙运行状态:

sudo firewall-cmd --state

加载新配置:

sudo firewall-cmd --reload

5. 重启 SSH 服务生效

生效更改:

sudo systemctl restart sshd.service

验证 SSH 服务状态:

sudo systemctl status sshd.service

测试 SSH 新端口连接

在本地尝试使用新端口连接服务器:

ssh root@服务器IP地址 -p 22QIqYX44

确认可以成功登录后,如果之前是双端口开启,可以将 22 端口从配置以及防火墙China编程规则中移除,以完成端口切换。

关闭旧端口 22(可选)

  • 修改 /etc/ssh/sshd_config 注释掉或删除 Port 22,只保留新端口。

  • 删除防火墙上的 22 端口放行规则:

sudo firewall-cmd --permanent --zone=public --remove-port=22/tcp
sudo firewall-cmd --reload
  • 重启 SSH 服务。

阿里云服务器特殊说明:安全组配置

如果服务器部署于阿里云 ECS,除了系统防火墙,云平台安全组规则也需允许新 SSH 端口:

  • 登录阿里云控制台。
  • 找到对应实例的安全组配置。
  • 在“入方向”规则中添加 TCP 新端口(如 2244)。
  • 保存后生效。

该配置确保公网访问能够连接新端口。

更高级的 SSH 安全建议

仅仅更改端口,是“安全通过模糊”策略的开始,建议配合以下措施:

  • 基于密钥的无密码登录:生成 SSH 密钥对,只允许拥有密钥的主机登录,关闭密码登录。

    参考命令:

ssh-keygen -t rsa -b 4096
ssh-copy-id -p 2244 user@server
  • 限制 IP 白名单:通过防火墙只允许信任 IP 地址访问 SSH 端口。

  • 禁用 root 直接登录:修改 /etc/ssh/sshd_config,设置

PermitRootLogin no
  • 开启 Fail2Ban 等暴力 破解防护工具:自动禁止多次失败登录的 IP。

  • 使用双因子认证(2FA):增加登录认证层级。

结语

更改 SSH 默认端口到非标准端口,是提China编程高服务器安全的有效手段之一,但千万不要以此为唯一安全策略。结合 SSH 密钥认证、IP 限制、防火墙硬化和系统增强更能打造坚固的服务器安全防线。希望本文的步骤对您顺利完成 SSH 端口更改和安全强化有所帮助!

以上就是CentOS7更改默认SSH端口与配置指南的详细内容,更多关于CentOS7更改SSH端口与配置的资料请关注编程China编程(www.chinasem.cn)其它相关文章!

这篇关于CentOS7更改默认SSH端口与配置指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1154336

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

macOS彻底卸载Python的超完整指南(推荐!)

《macOS彻底卸载Python的超完整指南(推荐!)》随着python解释器的不断更新升级和项目开发需要,有时候会需要升级或者降级系统中的python的版本,系统中留存的Pytho版本如果没有卸载干... 目录MACOS 彻底卸载 python 的完整指南重要警告卸载前检查卸载方法(按安装方式)1. 卸载

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

Python动态处理文件编码的完整指南

《Python动态处理文件编码的完整指南》在Python文件处理的高级应用中,我们经常会遇到需要动态处理文件编码的场景,本文将深入探讨Python中动态处理文件编码的技术,有需要的小伙伴可以了解下... 目录引言一、理解python的文件编码体系1.1 Python的IO层次结构1.2 编码问题的常见场景二