修改 SSH 远程访问端口的完整指南
为了提升服务器的安全性,避免常见的暴力破解攻击,默认的 SSH 端口(22)通常是最先被扫描的目标。本文将详细介绍如何更改 SSH 的监听端口,包括配置防火墙、SELinux 设置以及服务重启等关键步骤。
一、修改 SSH 配置文件
首先我们需要编辑sshd_config文件:
sudovim/etc/ssh/sshd_config在文件中找到如下行:
#初始是注释的,表示默认22 #Port 22将其取消注释并添加新的端口号(例如:2234):
Port 22 Port 2234💡 建议暂时保留
Port 22行,以便在新端口出现问题时仍能通过默认端口连接。
最终配置类似这样:
Port 22 Port 2234二、配置防火墙规则
确保新端口已在防火墙中放行:
# 查看当前开放的端口firewall-cmd --zone=public --list-ports# 若没有显示 2234/tcp,则添加该端口firewall-cmd --add-port=2234/tcp --permanent# 重新加载防火墙规则firewall-cmd --reload三、配置 SELinux(如果启用)
如果你的系统启用了 SELinux,还需要为其添加 SSH 新端口策略:
# 检查 SELinux 状态sestatus# 添加端口到 SELinux 规则中semanage port -a -t ssh_port_t -p tcp2234⚠️ 如果提示命令不存在,请安装 policycoreutils-python 包:
sudoyuminstallpolicycoreutils-python
四、重启 SSH 服务
完成以上配置后,重启sshd服务使更改生效:
sudosystemctl restart sshd你可以使用以下命令检查服务是否运行正常:
sudosystemctl status sshd五、验证连接
现在尝试使用新端口进行 SSH 登录:
sshusername@your_server_ip -p2234若能够顺利登录,说明新端口已经成功启用。
六、安全加固建议
1. 关闭默认端口(22)
确认新端口工作无误之后,可以考虑关闭默认端口以提高安全性:
- 编辑
/etc/ssh/sshd_config文件,注释掉或删除Port 22 - 执行以下命令从防火墙中移除 22 端口:
firewall-cmd --remove-port=22/tcp --permanent firewall-cmd --reload最后再次重启sshd服务:
sudosystemctl restart sshd2. 禁止 root 用户直接登录
在/etc/ssh/sshd_config中设置:
PermitRootLogin no3. 启用密钥认证(推荐)
同样在配置文件中开启公钥认证:
PubkeyAuthentication yes并将用户的公钥放置于~/.ssh/authorized_keys文件中。
4. 限制允许登录的用户
可以通过指定用户名的方式进一步限制访问权限:
AllowUsers your_username这会阻止其他非授权用户登录系统。
总结
通过上述步骤,你可以轻松地更改 SSH 默认端口,从而显著降低遭受自动化攻击的风险。此外,配合 SELinux 和防火墙策略,还能实现更加严格的访问控制机制。记住,在做任何网络层面的变更前都要做好备份和测试!