Linux系统SSH端口修改与安全配置指南
备份与修改SSH配置文件
修改前务必备份原始文件,防止配置错误导致服务无法启动。使用文本编辑器(如vi或nano)打开配置文件:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak sudo vi /etc/ssh/sshd_config找到默认被注释的Port 22行,删除行首的#,并修改为新端口(例如2222):
Port 2222注意:端口范围需在1-65535之间,且避免与其他服务冲突。
重启SSH服务
根据系统使用的服务管理工具选择命令:
# 使用systemctl(推荐) sudo systemctl restart sshd # 或使用service命令(旧版系统) sudo service ssh restart验证服务状态:
sudo systemctl status sshd # 或 sudo service ssh status更新防火墙规则
若系统启用了防火墙(如firewalld、ufw或iptables),需放行新端口:
firewalld(CentOS/RHEL):
sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent sudo firewall-cmd --reloadufw(Ubuntu/Debian):
sudo ufw allow 2222/tcp sudo ufw reloadiptables(通用):
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT # 保存规则(根据系统不同) sudo service iptables save
验证端口修改
- 本地测试:
ssh -p 2222 username@localhost - 远程测试:
ssh -p 2222 username@your_server_ip - 检查端口监听:
sudo netstat -tulnp | grep sshd # 或 sudo ss -tulnp | grep sshd
常见问题解决
SELinux拒绝访问
若重启后服务失败,可能是SELinux阻止了新端口。临时解决方案:
sudo setenforce 0 # 临时关闭SELinux(不推荐长期使用)永久解决方案:修改SELinux策略或放行端口:
sudo semanage port -a -t ssh_port_t -p tcp 2222防火墙未放行端口
确保防火墙规则已正确添加,并通过firewall-cmd --list-ports或ufw status检查。
配置文件语法错误
修改前可使用以下命令检查语法:
sudo sshd -t代码示例(完整流程)
#!/bin/bash # 备份配置文件 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak # 修改端口(假设新端口为2222) sudo sed -i 's/^#Port 22/Port 2222/' /etc/ssh/sshd_config # 重启SSH服务 sudo systemctl restart sshd # 更新防火墙(以firewalld为例) sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent sudo firewall-cmd --reload echo "SSH端口已修改为2222,请测试连接:ssh -p 2222 username@your_server_ip"