进行 SSH 安全加固时,最先要落实两项基础但非常关键的设置:第一,把默认的 22 端口修改为 10000–65535 范围内的非标准 SSH 端口,并且不要一次性直接关闭原端口,建议先保留双端口进行连接测试;第二,设置

修改 SSH 默认端口并禁止 root 远程登录,是服务器 SSH 加固中最基础、也最重要的两个步骤。操作本身并不复杂,但只要遗漏其中任何一项,都可能让服务器长期暴露在暴力破解、自动化扫描等常见安全威胁之下。
修改SSH监听端口
22 端口作为 SSH 默认端口,通常是暴力扫描和恶意探测最常重点攻击的目标。将 SSH 端口改为非标准端口后,大多数无效连接和批量扫描请求往往会明显减少。更稳妥的做法,是把 SSH 监听端口设置在 10000–65535 区间内,优先选择四位或五位数字,同时尽量避开 80、443、3306 这类常见业务服务端口。
- 使用 root 权限编辑 SSH 配置文件:vi /etc/ssh/sshd_config
- 查找或新增Port配置行,例如设置为Port 22222(不要马上删除原有的 Port 22,建议先保留双端口测试登录)
- 保存退出后,先通过新端口连接测试一次(建议同时打开两个终端:一个保留当前会话,一个使用新端口尝试登录),确认连接正常后再删除旧的 Port 配置
- 重启 SSH 服务:systemctl restart sshd
- 防火墙也要同步放行新的 SSH 端口,例如 firewalld 可执行:firewall-cmd --permanent --add-port=22222/tcp,然后再执行 reload
禁止root用户远程登录
允许 Root 账户直接远程登录,等于把服务器管理入口直接暴露给攻击者。更安全的做法是必须关闭 root 直登,改为普通用户先登录,再通过 sudo 执行提权操作。
- 仍然在/etc/ssh/sshd_config中,确认这一行存在且值为 no:PermitRootLogin no
- 如果该配置项被注释(前面带有 #),去掉 #;如果整行不存在,则手动添加到配置文件末尾
- 普通用户需要提前配置好 sudo 权限,例如执行usermod -aG wheel username(CentOS/RHEL)或usermod -aG sudo username(Ubuntu/Debian)
- 重启 sshd 服务使配置生效:systemctl restart sshd
额外建议:绑定监听IP(可选但推荐)
如果服务器存在多个网卡,或者采用内外网分离架构,建议限制 SSH 仅监听指定管理 IP,以进一步缩小暴露面并降低被扫描的风险。
- 在sshd_config中添加:ListenAddress 192.168.1.100(请替换为实际使用的管理网段 IP)
- 避免写成ListenAddress 0.0.0.0或留空,因为这样实际上并没有做任何访问限制
- 配置完成后同样需要重启 sshd 服务
验证是否生效
这一步不要省略——如果配置写错、端口未放行,或者服务没有正确重启,那么前面的 SSH 配置修改就等于没有真正生效。
- 检查端口监听状态:ss -tlnp | grep ssh,确认输出中包含你设置的新 SSH 端口
- 尝试使用 root 用户配合新端口连接,应当被直接拒绝;使用普通用户通过新端口登录,则应能够正常连接
- 查看 SSH 配置实际加载结果:sshd -T | grep -E "port|permitrootlogin",确认输出内容与你设置的参数一致
