CentOS 系统 SSH 服务部署与安全加固指南
远程管理 Linux 服务器,SSH(Secure Shell)是不可或缺的核心工具,它通过加密通道提供安全的远程登录和文件传输能力,本文将详细介绍在 CentOS 系统上部署、配置及加固 SSH 服务的完整流程。
SSH 服务核心概念
SSH 协议采用非对称加密技术建立安全连接,服务端运行 sshd 守护进程,默认监听 TCP 22 端口,客户端(如 PuTTY、OpenSSH)发起连接请求,双方协商加密算法并完成身份验证后建立安全会话。

CentOS 系统 SSH 服务安装与启动
-
检查安装状态 大多数 CentOS 版本预装 OpenSSH,通过命令确认:
rpm -qa | grep openssh-server
若未安装,使用 YUM 或 DNF 安装:
sudo yum install openssh-server openssh-clients -y # CentOS 7/8 sudo dnf install openssh-server openssh-clients -y # CentOS Stream 9
-
启动并设置开机自启
sudo systemctl start sshd # 立即启动服务 sudo systemctl enable sshd # 设置开机自动启动 sudo systemctl status sshd # 验证服务运行状态
-
防火墙放行 SSH 端口 CentOS 默认防火墙需放行 SSH 端口(通常为 22):
sudo firewall-cmd --permanent --add-service=ssh # 放行 SSH 服务 sudo firewall-cmd --reload # 重载防火墙配置
关键配置文件详解与优化 (/etc/ssh/sshd_config)
修改配置前务必备份:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
使用文本编辑器(如 vi 或 nano)编辑主配置文件:

sudo vi /etc/ssh/sshd_config
关键参数配置建议:
-
更改默认端口 (强烈推荐)
Port 2222 # 示例端口,避免常见扫描攻击
修改后需更新防火墙规则:
sudo firewall-cmd --permanent --remove-service=ssh sudo firewall-cmd --permanent --add-port=2222/tcp sudo firewall-cmd --reload
-
禁止 Root 用户直接登录
PermitRootLogin no
务必先创建具有 sudo 权限的普通用户!
-
限制登录用户或用户组

AllowUsers user1 user2@192.168.1.100 # 仅允许特定用户/IP登录 AllowGroups sshusers # 仅允许特定用户组成员登录
-
增强加密算法与协议
Protocol 2 # 仅使用更安全的 SSHv2 Ciphers aes256-ctr,aes192-ctr,aes128-ctr # 优先使用强加密算法 MACs hmac-sha2-512,hmac-sha2-256 # 使用强消息认证码
-
空闲会话超时设置
ClientAliveInterval 300 # 客户端空闲 300 秒后发送活动请求 ClientAliveCountMax 0 # 不发送活动请求后立即断开连接
-
其他重要安全选项
LoginGraceTime 60 # 登录超时时间(秒) MaxAuthTries 3 # 最大身份验证尝试次数 PermitEmptyPasswords no # 禁止空密码登录 X11Forwarding no # 禁用 X11 转发(非图形管理场景)
应用配置变更:
sudo systemctl restart sshd # 重启 SSH 服务使配置生效
高级安全加固策略
-
使用 SSH 密钥对认证 (最佳实践)
- 客户端生成密钥对:
ssh-keygen -t ed25519 # 推荐使用 Ed25519 算法
- 上传公钥到服务器:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@your_server_ip -p 2222
- 服务器配置强制密钥登录:
在
/etc/ssh/sshd_config中设置:PasswordAuthentication no # 彻底禁用密码登录 PubkeyAuthentication yes # 启用公钥认证
- 客户端生成密钥对:
-
部署 Fail2ban 防御暴力破解
- 安装 Fail2ban:
sudo yum install epel-release -y sudo yum install fail2ban -y
- 创建 SSH 保护配置 (
/etc/fail2ban/jail.d/sshd.local):[sshd] enabled = true port = 2222 # 修改为你的 SSH 端口 filter = sshd logpath = /var/log/secure maxretry = 3 # 最大失败尝试次数 findtime = 600 # 10 分钟内 bantime = 86400 # 封禁 24 小时
- 启动并启用 Fail2ban:
sudo systemctl start fail2ban sudo systemctl enable fail2ban
- 安装 Fail2ban:
-
利用 SELinux 增强保护 确保 SELinux 处于
enforcing模式:sudo setenforce 1 sudo sed -i 's/^SELINUX=.*/SELINUX=enforcing/' /etc/selinux/config
修改 SSH 端口后需更新 SELinux 上下文:
sudo semanage port -a -t ssh_port_t -p tcp 2222
连接测试与管理
- 使用密钥连接(新端口):
ssh -i ~/.ssh/id_ed25519 -p 2222 your_user@your_server_ip
- 查看活动 SSH 连接:
sudo netstat -tnpa | grep ':2222.*ESTABLISHED.*sshd' sudo ss -tunp | grep 'sshd'
- 查看 SSH 登录日志:
sudo tail -f /var/log/secure | grep sshd
持续维护与最佳实践
- 保持系统与软件更新:
sudo yum update -y # CentOS 7/8 sudo dnf update -y # CentOS Stream 9
- 定期审计日志: 监控
/var/log/secure中的异常登录尝试。 - 最小权限原则: 仅为必要用户分配 SSH 访问权限。
- 禁用未使用的服务: 减少服务器攻击面。
- 密钥管理: 妥善保管私钥(建议加密),定期轮换密钥。
遵循以上步骤部署和加固 SSH 服务,将极大提升 CentOS 服务器的远程管理安全性,最后提醒,任何安全配置的修改都应在测试环境验证后再应用于生产服务器,避免意外锁定访问权限,服务器的安全性是一个持续维护和优化的过程,需要管理员保持警惕并应用最新的安全实践。
