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 服务器的远程管理安全性,最后提醒,任何安全配置的修改都应在测试环境验证后再应用于生产服务器,避免意外锁定访问权限,服务器的安全性是一个持续维护和优化的过程,需要管理员保持警惕并应用最新的安全实践。
