HCRM博客

CentOS系统如何开启SSH服务?远程连接配置步骤是什么

在 CentOS 系统中,开通 SSH 服务是实现服务器远程管理的首要步骤,其核心在于正确安装 OpenSSH 服务端软件,通过修改 /etc/ssh/sshd_config 配置文件确立安全策略,并妥善配置防火墙与 SELinux 规则以允许流量通过,这一过程不仅要求服务能够正常启动,更要求管理员在开通之初就建立起基于非 root 登录和密钥认证的安全防线,从而在保障管理便捷性的同时,最大程度地降低服务器被暴力破解的风险。

OpenSSH 服务端的安装与基础启动

CentOS 系统通常默认预装了 OpenSSH 服务端,但在最小化安装(Minimal Install)模式下可能需要手动安装,需要通过包管理器确认并安装相关软件,对于 CentOS 7 及以下版本,使用 yum 包管理器;而对于 CentOS 8 及 Stream 版本,则使用 dnf,安装命令如下:

CentOS系统如何开启SSH服务?远程连接配置步骤是什么-图1

yum install y opensshserver

安装完成后,必须将 sshd 服务加入开机自启项,并立即启动服务,以确保服务器重启后依然能够远程连接,使用 systemctl 命令可以高效管理服务状态:

systemctl enable sshd
systemctl start sshd

SSH 服务已默认监听 22 号端口,为了验证服务是否正常运行,可以使用 systemctl status sshd 查看运行状态,或使用 netstat tunlp | grep 22 确认端口监听情况,若服务启动失败,建议优先检查配置文件语法或查看系统日志 /var/log/messages 排查错误。

核心配置文件详解与安全加固

SSH 服务的所有行为均由 /etc/ssh/sshd_config 文件控制,为了提升安全性,不应直接使用默认配置,而应根据业务需求进行精细化调整,修改配置文件前,建议先进行备份。

更改默认端口 默认的 22 端口是全网扫描和暴力破解的重灾区,将其修改为高位随机端口(如 22222)可以有效规避自动化脚本攻击,在配置文件中找到 #Port 22,去掉注释并修改数值:

Port 22222

禁用 Root 直接登录 允许 root 用户直接通过密码登录存在极大风险,一旦密码泄露,攻击者将获得服务器完全控制权,最佳实践是创建一个普通用户,通过 sudo 提权,修改配置如下:

PermitRootLogin no

限制登录验证方式 密码验证虽然方便,但在弱口令面前不堪一击,建议优先配置密钥验证,并在配置密钥登录成功后,禁用密码验证:

PubkeyAuthentication yes
PasswordAuthentication no

修改完配置文件后,必须执行 systemctl restart sshd 使配置生效,注意,如果在修改端口的同时禁用了密码验证且未提前配置好密钥,可能会导致无法连接服务器,因此操作顺序至关重要。

防火墙与 SELinux 策略配置

CentOS 的安全机制不仅限于 SSH 服务本身,系统自带的防火墙和 SELinux 是两道重要的外部防线,如果修改了 SSH 默认端口,必须同步更新这两个组件的配置,否则连接会被拒绝。

CentOS系统如何开启SSH服务?远程连接配置步骤是什么-图2

配置 Firewalld 防火墙 Firewalld 是 CentOS 7+ 默认的防火墙管理工具,如果更改了端口,需要移除 ssh 服务规则,并添加新的端口放行规则:

firewallcmd permanent removeservice=ssh
firewallcmd permanent addport=22222/tcp
firewallcmd reload

调整 SELinux 上下文 SELinux(SecurityEnhanced Linux)对端口的监听有严格的策略限制,即使防火墙放行了,SELinux 也会阻止 sshd 进程绑定非标准端口,需要使用 semanage 工具将新端口添加到 ssh_port_t 类型中:

yum install y policycoreutilspython
semanage port a t ssh_port_t p tcp 22222

若提示端口已存在,可使用 m 参数修改,这一步是 CentOS 区别于其他 Linux 发行版的关键操作,也是许多运维人员容易忽略的细节。

构建高安全性的密钥认证体系

为了实现真正的无密码登录并提升安全性,SSH 密钥对是必不可少的解决方案,密钥对分为公钥和私钥,公钥放置在服务器上,私钥保留在客户端本地。

生成密钥对 在客户端机器上(如本地 PC 或跳板机),使用 sshkeygen 生成密钥,推荐使用 ED25519 算法,其安全性高于 RSA 且计算效率更高:

sshkeygen t ed25519 C "your_email@example.com"

上传公钥至服务器 生成后,使用 sshcopyid 命令将公钥自动上传到服务器的指定用户目录下:

sshcopyid i ~/.ssh/id_ed25519.pub user@server_ip p 22222

该命令会自动将公钥写入服务器端的 ~/.ssh/authorized_keys 文件中,并设置正确的权限(权限必须为 600 或更严格,否则 SSH 服务会拒绝读取)。

完成密钥分发后,即可在服务端的 sshd_config 中禁用密码认证,实现仅凭密钥登录的安全策略。

CentOS系统如何开启SSH服务?远程连接配置步骤是什么-图3

常见故障排查与日志分析

在配置过程中,可能会遇到连接拒绝或超时等问题,排查应遵循由外向内的原则。

使用 telnetnc 测试端口连通性,确认防火墙和 SELinux 是否放行,检查服务端日志 /var/log/secure,该文件详细记录了 SSH 的认证失败、权限拒绝等信息,若看到 Authentication refused: bad ownership or modes,说明 ~/.ssh 目录或 authorized_keys 文件权限过宽,需执行 chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys 进行修复,确保 sshd 进程所属用户和组正确,通常应为 root。

相关问答

Q1:如果在修改 SSH 端口并禁用密码登录后,因密钥配置错误导致无法连接服务器,该如何恢复?A: 这种情况下无法通过 SSH 远程修复,必须通过服务器的 VNC 控制台(如果是云服务器)或本地终端(如果是物理机)直接登录,登录后,检查 /var/log/secure 确认具体的密钥拒绝原因,通常是文件权限问题,临时恢复的方法是修改 /etc/ssh/sshd_config,将 PasswordAuthentication 改为 yes,并重启 sshd 服务,重新使用密码登录后再排查密钥配置。

Q2:如何限制 SSH 只允许特定的 IP 地址或网段连接?A: 可以在 /etc/hosts.allow/etc/hosts.deny 中利用 TCP Wrappers 进行控制,或者更推荐在 Firewalld 防火墙层面使用 rich rule(富规则)进行限制,只允许 192.168.1.0/24 网段连接 22222 端口:

firewallcmd permanent addrichrule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22222" accept'
firewallcmd permanent removeservice=ssh
firewallcmd reload

这样可以确保除指定网段外的所有 IP 在防火墙层就被丢弃,减少无效的连接请求。

便是 CentOS 开通 SSH 服务的完整流程与专业配置方案,如果您在具体操作中遇到端口冲突或 SELinux 报错等问题,欢迎在评论区留言,我们将为您提供进一步的排查建议。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/93430.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~