**问题:如何在Linux系统中修改sshd和ssh的默认端口号?**
在Linux系统中,SSH(Secure Shell)默认使用端口22进行通信。为了增强系统安全性,防止自动化攻击,许多管理员会选择修改SSH客户端(ssh)和服务器端(sshd)的默认端口。那么,如何正确配置并修改SSH服务的监听端口?具体操作步骤包括修改配置文件`/etc/ssh/sshd_config`中的`Port`参数,并更新防火墙规则以放行新端口。此外,在连接时如何指定非默认端口?是否还需要调整SELinux或AppArmor等安全模块的设置?本文将详细介绍修改SSH端口的完整流程及常见注意事项。
1条回答 默认 最新
kylin小鸡内裤 2025-07-03 22:20关注如何在Linux系统中修改sshd和ssh的默认端口号?
SSH(Secure Shell)是Linux系统中最常用的远程管理工具之一,默认使用端口22进行通信。为了提高安全性,避免自动化攻击和扫描行为,许多系统管理员会选择修改SSH服务的默认端口号。本文将从配置文件修改、防火墙设置、连接方式调整以及安全模块适配等方面,深入讲解如何正确修改SSH的默认端口。
1. 修改SSH服务器端口配置
要修改SSH服务监听的端口号,需编辑其配置文件
/etc/ssh/sshd_config。请按照以下步骤操作:- 使用文本编辑器打开配置文件:
sudo vi /etc/ssh/sshd_config - 找到如下行并取消注释(如果被注释),然后修改端口号为期望值(例如 2222):
#Port 22 → Port 2222 - 保存并退出编辑器。
- 重启SSH服务以应用更改:
sudo systemctl restart sshd
2. 配置防火墙放行新端口
修改端口后,必须确保防火墙允许新端口通过。以下是不同系统下的配置方法:
系统类型 命令示例 CentOS/RHEL 7+/Firewalld sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reloadUbuntu/Debian UFW sudo ufw allow 2222/tcpIptables sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT3. 客户端连接时指定非默认端口
在客户端使用
ssh命令连接时,可通过-p参数指定目标主机使用的端口号:ssh username@remote_host -p 2222也可以在本地用户目录下配置
~/.ssh/config文件,实现自动识别端口:Host myserver HostName remote_host User username Port 22224. SELinux 或 AppArmor 的适配设置
某些Linux发行版启用了SELinux或AppArmor等安全模块,它们可能会阻止SSH服务绑定到非标准端口。
- SELinux 环境下添加端口权限:
sudo semanage port -a -t ssh_port_t -p tcp 2222 - AppArmor 环境下可能需要手动编辑配置文件(如
/etc/apparmor.d/usr.sbin.sshd),添加允许的新端口。
5. 验证与测试
完成上述所有步骤后,建议执行以下验证操作:
- 检查
sshd是否正在监听新端口:sudo ss -tuln | grep 2222 - 尝试从另一台机器使用新端口连接:
ssh username@your_server_ip -p 2222 - 查看日志确认无异常:
sudo journalctl -u sshd
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报- 使用文本编辑器打开配置文件: