5154

Good Luck To You!

centos服务器如何修改ssh端口和配置文件?

在CentOS系统中,Secure Shell (SSH) 是进行远程管理和服务器维护的核心工具,其默认配置虽然易于使用,但为了提升安全性、满足特定工作流程或实现个性化定制,修改SSH配置是每一位系统管理员的必备技能,本文将详细、系统地介绍如何在CentOS中修改SSH服务配置,确保您能够安全、高效地管理您的服务器。

centos服务器如何修改ssh端口和配置文件?

准备工作:安全第一

在对任何核心系统服务进行修改之前,最关键的一步是做好备份,SSH服务的配置文件通常位于 /etc/ssh/sshd_config,一个错误的配置可能会导致您无法远程连接到服务器,请务必在开始前执行以下命令创建一个备份文件:

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

所有对SSH配置的修改都需要管理员权限,您需要以 root 用户身份登录,或在普通用户下使用 sudo 命令来执行编辑操作。

核心配置文件:sshd_config

/etc/ssh/sshd_config 是SSH守护进程的主配置文件,它由一系列“指令-值”对组成,格式为 指令 值,以 开头的行是注释行,用于提供说明或禁用某个指令,了解一些常用的核心指令是进行有效配置的基础。

下表列出了一些最常用且重要的SSH配置指令:

指令 默认值 说明
Port 22 设置SSH服务监听的端口号,修改默认端口可有效规避自动化扫描攻击。
PermitRootLogin yes 是否允许 root 用户直接通过SSH登录,出于安全考虑,强烈建议设置为 no
PasswordAuthentication yes 是否启用密码认证,为了更高的安全性,可在配置好密钥对登录后将其设置为 no
PubkeyAuthentication yes 是否启用公钥认证,这是比密码更安全的认证方式。
AllowUsers (无) 限制只有指定的用户可以登录。AllowUsers user1 user2
AllowGroups (无) 限制只有指定用户组的成员可以登录。AllowGroups sshusers
MaxAuthTries 6 设置最大认证尝试次数,超过此次数后连接将被断开,可有效防止暴力破解。

常见修改场景与实战

掌握了基本指令后,我们来看几个最常见且实用的修改场景。

修改SSH默认端口

将SSH端口从默认的22更改为一个不常用的高位端口(如2222),是提升服务器安全性的第一步。

操作步骤:

  1. 使用文本编辑器(如 vinano)打开配置文件:

    sudo vi /etc/ssh/sshd_config
  2. 找到 #Port 22 这一行,去掉开头的 并将数字 22 修改为您希望的新端口号,2222

    #Port 22
    Port 2222
  3. 保存文件并退出编辑器。

    centos服务器如何修改ssh端口和配置文件?

重要提示: 修改端口后,必须相应地调整防火墙规则,否则将无法连接,后续章节会详细说明防火墙配置。

禁用root用户远程登录

允许 root 用户直接登录存在巨大风险,因为这是攻击者首要尝试爆破的用户名,最佳实践是创建一个普通用户,赋予其 sudo 权限,然后禁止 root 远程登录。

操作步骤:

  1. (前置步骤) 确保您已经创建了一个具有 sudo 权限的普通用户,并且可以正常登录。
  2. 打开 /etc/ssh/sshd_config 文件。
  3. 找到 PermitRootLogin yes 这一行,将其修改为:
    PermitRootLogin no
  4. 保存文件,这样,root 用户将无法再通过SSH直接登录,必须先以普通用户身份登录,然后使用 su -sudo 提升权限。

使用密钥对登录,禁用密码认证

SSH密钥对认证是一种比密码加密强度更高、更安全的认证方式,一旦配置成功,就可以完全禁用密码认证,彻底杜绝暴力破解的风险。

操作步骤:

  1. (前置步骤) 在您的本地计算机上生成SSH密钥对(如果尚未生成),并将公钥(~/.ssh/id_rsa.pub复制到CentOS服务器上对应用户的 ~/.ssh/authorized_keys 文件中,确保密钥登录已经可以正常使用。
  2. 打开 /etc/ssh/sshd_config 文件。
  3. 确保 PubkeyAuthentication yes 指令是启用状态(这通常是默认值)。
  4. 找到 PasswordAuthentication yes,将其修改为:
    PasswordAuthentication no
  5. 保存文件,此后,只有持有正确私钥的客户端才能登录服务器。

保存配置并重启SSH服务

所有对 /etc/ssh/sshd_config 文件的修改都不会立即生效,必须重启SSH服务才能让新的配置生效,在CentOS 7及更高版本中,使用 systemd 来管理服务。

执行以下命令来重启SSH服务:

sudo systemctl restart sshd

如果您希望在不中断现有连接的情况下重新加载配置文件(仅限部分配置项支持),可以使用 reload 命令:

sudo systemctl reload sshd

重启后,建议检查一下服务的状态,确保其正常运行:

sudo systemctl status sshd

如果看到 active (running) 的绿色字样,说明服务已成功重启。

centos服务器如何修改ssh端口和配置文件?

配置防火墙以放行新端口

如果您修改了SSH端口,还必须更新防火墙规则,允许新的端口通过,在CentOS 7/8/9中,默认使用 firewalld

假设您将SSH端口修改为 2222,执行以下命令:

# 永久添加TCP 2222端口到防火墙规则
sudo firewall-cmd --permanent --add-port=2222/tcp
# 重新加载防火墙配置,使规则生效
sudo firewall-cmd --reload

如果您使用的是 iptables,则规则会略有不同。

相关问答FAQs

问题1:修改SSH端口后无法连接,该怎么办?

答: 这是一个常见问题,通常由以下几个原因导致,请按顺序排查:

  1. SSH服务未重启: 确认您已经执行了 sudo systemctl restart sshdsudo systemctl reload sshd
  2. 防火墙未放行: 这是最常见的原因,请检查 firewalldiptables 是否已经放行您设置的新端口,可以使用 sudo firewall-cmd --list-ports 来查看已放行的端口列表。
  3. 客户端连接方式错误: 在使用SSH客户端连接时,需要通过 -p 参数指定新的端口号。ssh user@your_server_ip -p 2222
  4. SELinux限制: 如果您的服务器开启了SELinux,它可能不允许SSH服务在非标准端口上监听,您需要使用以下命令为新端口添加SELinux规则:sudo semanage port -a -t ssh_port_t -p tcp 2222,如果提示 semanage 命令未找到,请先安装 policycoreutils-python-utils 包。

问题2:sshd_configssh_config 这两个文件有什么区别?

答: 这是两个非常容易混淆但功能完全不同的配置文件,它们分别控制着SSH服务器的不同方面。

  • /etc/ssh/sshd_config (注意多了一个 d):这是 SSH守护进程 的配置文件,用于控制 服务器端 的行为,它定义了服务器监听的端口、允许谁登录、使用何种认证方式、登录后的环境限制等,您在服务器上进行的所有修改,都是在编辑这个文件。
  • /etc/ssh/ssh_config:这是 SSH客户端 的全局配置文件,用于控制 本地机器 上的SSH客户端程序在连接到 任何远程服务器 时的默认行为,您可以在这里设置默认使用的用户名、默认连接端口、或者为特定主机设置别名和密钥文件。

sshd_config 管服务器,ssh_config 管客户端,作为服务器管理员,您主要关心的是 sshd_config

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年11月    »
12
3456789
10111213141516
17181920212223
24252627282930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.