SSH是专为远程登录会话和其他网络服务提供安全性的协议,默认采用加密传输,能够有效防止远程管理过程中的信息泄露问题。在CentOS服务器中,正确配置SSH可以大幅降低服务器被暴力破解、非法入侵的风险。

基础环境准备
首先确认CentOS系统中已经安装了SSH服务,默认情况下CentOS 7及以上版本都会预装OpenSSH服务端,可通过以下命令检查服务状态:
# 检查SSH服务是否运行 systemctl status sshd # 如果未安装,执行以下命令安装 yum install -y openssh-server openssh-clients # 启动并设置开机自启 systemctl start sshd systemctl enable sshd
修改SSH默认端口
SSH默认使用22端口,这是攻击者暴力破解的常见目标,修改默认端口可以减少大量无意义的攻击尝试。
修改配置文件
编辑SSH服务的主配置文件/etc/ssh/sshd_config,找到#Port 22这一行,去掉注释并修改为自定义端口,建议选择1024以上的非知名端口:
# 编辑配置文件 vim /etc/ssh/sshd_config # 修改内容如下,示例端口为2222 Port 2222 # 保存退出后重启SSH服务 systemctl restart sshd
配置防火墙放行端口
如果系统开启了firewalld防火墙,需要放行修改后的SSH端口,否则无法远程连接:
# 放行2222端口 firewall-cmd --permanent --add-port=2222/tcp # 重新加载防火墙规则 firewall-cmd --reload
禁用密码登录,启用密钥认证
密码登录容易被暴力破解,使用密钥认证可以大幅提升安全性,密钥认证采用非对称加密,只有持有对应私钥的客户端才能登录服务器。
生成密钥对
在本地客户端(比如你自己的Windows或者Linux电脑)生成SSH密钥对,执行以下命令:
# 生成RSA密钥对,一路回车即可,默认生成在~/.ssh目录 ssh-keygen -t rsa -b 4096
上传公钥到服务器
将本地生成的公钥~/.ssh/id_rsa.pub内容上传到CentOS服务器的~/.ssh/authorized_keys文件中:
# 本地执行,将公钥上传到服务器,注意替换端口和服务器地址 ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 root@192.168.0.1 # 如果ssh-copy-id不可用,也可以手动复制公钥内容到服务器的authorized_keys文件
禁用密码登录
再次编辑/etc/ssh/sshd_config配置文件,修改以下配置项:
# 禁用密码认证 PasswordAuthentication no # 禁用空密码登录 PermitEmptyPasswords no # 启用公钥认证 PubkeyAuthentication yes # 指定公钥存放路径 AuthorizedKeysFile .ssh/authorized_keys # 保存后重启SSH服务 systemctl restart sshd
其他安全优化配置
除了上述核心配置,还可以调整以下参数进一步提升SSH的安全性:
- 禁止root用户直接登录:设置
PermitRootLogin no,平时使用普通用户登录,需要管理员权限时再切换 - 限制登录用户:设置
AllowUsers 用户名1 用户名2,只允许指定用户远程登录 - 设置登录超时时间:设置
ClientAliveInterval 300和ClientAliveCountMax 3,无操作300秒后断开连接 - 禁用SSH协议1:设置
Protocol 2,协议1存在已知安全漏洞
验证配置效果
完成所有配置后,使用新的端口和密钥尝试登录服务器,确认配置生效:
# 使用指定端口和私钥登录服务器 ssh -p 2222 -i ~/.ssh/id_rsa root@192.168.0.1
如果可以正常登录,说明SSH安全配置已经生效,此时再尝试用密码登录或者默认22端口登录都会被拒绝,服务器的远程访问安全性得到了有效提升。