如何在CentOS服务器上安全部署并配置SSH服务?

在服务器管理领域,SSH(Secure Shell)协议是保障远程通信安全的基石,它通过加密技术为数据传输提供了一个安全的通道,有效防止信息泄露和中间人攻击,对于广泛使用的CentOS系统而言,正确部署和配置SSH服务是每一位系统管理员的必备技能,本文将详细介绍在CentOS上部署SSH的完整流程,从安装、配置到安全加固,旨在帮助您构建一个稳定且安全的远程访问环境。

如何在CentOS服务器上安全部署并配置SSH服务?

检查与安装OpenSSH服务器

在开始之前,首先需要确认CentOS系统是否已经安装了OpenSSH服务器软件包,大多数CentOS默认安装会包含此服务,但最小化安装版本可能需要手动安装。

打开终端,使用以下命令检查SSH服务的状态:

systemctl status sshd

如果系统返回类似 active (running) 的信息,说明SSH服务已经安装并正在运行,如果提示 Unit sshd.service could not be found,则表示尚未安装。

对于CentOS 7及更高版本,可以使用 dnfyum 包管理器进行安装,推荐使用 dnf

sudo dnf install openssh-server -y

对于较旧的CentOS版本,则使用 yum

sudo yum install openssh-server -y

安装完成后,SSH服务(守护进程名为 sshd)就已经准备就绪。

启动与启用SSH服务

安装完毕后,需要手动启动SSH服务,并设置其为开机自启动,以确保服务器重启后远程连接依然可用。

执行以下命令启动 sshd 服务:

sudo systemctl start sshd

使用 enable 命令将其设置为开机自启:

如何在CentOS服务器上安全部署并配置SSH服务?

sudo systemctl enable sshd

可以再次运行 systemctl status sshd 来确认服务已成功启动并处于激活状态。

配置防火墙规则

CentOS系统默认使用 firewalld 作为防火墙管理工具,为了允许外部客户端通过SSH连接到服务器,必须在防火墙中开放相应的端口,SSH默认使用TCP的22端口。

执行以下命令,永久性地开放SSH服务(这会自动处理22端口):

sudo firewall-cmd --permanent --add-service=ssh

为了让规则立即生效,需要重新加载防火墙配置:

sudo firewall-cmd --reload

您可以使用 sudo firewall-cmd --list-all 命令来验证SSH服务是否已成功添加到防火墙规则中。

SSH核心配置文件详解

SSH服务的主要配置文件位于 /etc/ssh/sshd_config,通过修改此文件,可以极大地增强SSH服务器的安全性,在进行任何修改前,建议先备份原始文件:

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

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

sudo vi /etc/ssh/sshd_config

以下是一些关键配置参数的说明,您可以根据安全需求进行调整:

参数 默认值 说明
Port 22 SSH服务监听的端口,修改为非标准端口可有效抵御自动化扫描攻击。
PermitRootLogin yes 是否允许root用户直接登录,出于安全考虑,建议设置为 prohibit-passwordno
PasswordAuthentication yes 是否启用密码认证,建议在配置好密钥登录后,将其设置为 no,禁用密码登录。
PubkeyAuthentication yes 是否启用公钥认证,这是比密码更安全的认证方式,建议保持 yes
AllowUsers (无) 限制只有指定的用户可以登录。AllowUsers user1 user2@192.168.1.100

修改完配置文件后,必须重启 sshd 服务才能使更改生效:

如何在CentOS服务器上安全部署并配置SSH服务?

sudo systemctl restart sshd

客户端连接测试

至此,SSH服务器已部署完毕,您可以从任何支持SSH协议的客户端(如另一台Linux/macOS终端、Windows的PowerShell或PuTTY)进行连接。

基本连接命令格式为:

ssh username@server_ip_address

如果您修改了默认端口,则需要使用 -p 参数指定端口号:

ssh -p 2222 username@server_ip_address

首次连接时,系统会提示您接受服务器的公钥指纹,输入 yes 即可,随后,根据您配置的认证方式(密码或密钥)完成登录。


相关问答FAQs

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

解答: 这是最常见的配置问题之一,请确认您在客户端连接时使用了正确的 -p 参数和新端口号,最可能的原因是防火墙规则没有更新,您需要重新运行防火墙命令,开放新的端口,如果新端口是 2222,应执行:
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload,如果问题依旧,请检查SELinux是否限制了SSH端口,可以使用 semanage port -a -t ssh_port_t -p tcp 2222 来为SELinux添加新的SSH端口。

问题2:如何使用SSH密钥对进行登录,并禁用密码认证?

解答: 这是提升SSH安全性的最佳实践,步骤如下:

  1. 在客户端生成密钥对:在您的本地机器上运行 ssh-keygen -t rsa -b 4096,按提示操作即可生成私钥(~/.ssh/id_rsa)和公钥(~/.ssh/id_rsa.pub)。
  2. 将公钥复制到服务器:使用 ssh-copy-id username@server_ip_address 命令,它会自动将您的公钥添加到服务器上对应用户的 ~/.ssh/authorized_keys 文件中,并设置正确的权限。
  3. 测试密钥登录:断开当前连接,重新尝试SSH登录,此时应无需输入密码即可直接登录。
  4. 禁用密码认证:登录服务器,编辑 /etc/ssh/sshd_config 文件,找到 PasswordAuthentication yes 这一行,将其改为 PasswordAuthentication no
  5. 重启SSH服务:运行 sudo systemctl restart sshd
    完成以上步骤后,您的SSH服务器将只接受密钥认证,大大提高了安全性,请务必在禁用密码认证前,确保密钥登录已成功配置,否则您将被锁定在服务器之外。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-03 13:30
下一篇 2025-10-03 13:35

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信