linux ssh如何实现增加访问端口
在 Linux 系统中,SSH 默认使用 22 端口。
为了增强安全性或满足特定需求,可以通过修改 SSH 配置来增加或更改 SSH 访问端口。
以下是具体步骤:
1. 修改 SSH 配置文件
SSH 的配置文件通常位于 /etc/ssh/sshd_config。使用文本编辑器(如 vim 或 nano)打开该文件:
sudo vim /etc/ssh/sshd_config
2. 增加或修改端口
在配置文件中找到 Port 配置项。如果不存在,可以手动添加。例如,增加一个额外的端口 2222:
Port 22 Port 2222
- 可以同时指定多个端口,SSH 会监听所有指定的端口。
- 如果需要完全替换默认端口,可以将
Port 22注释掉或删除,只保留新端口。
3. 保存并退出编辑器
- 在
vim中,按Esc,然后输入:wq保存并退出。 - 在
nano中,按Ctrl + O保存,然后按Ctrl + X退出。
4. 更新防火墙规则
如果系统启用了防火墙(如 ufw 或 firewalld),需要允许新端口通过防火墙。
使用ufw(Ubuntu/Debian)
sudo ufw allow 2222/tcp sudo ufw reload
使用firewalld(CentOS/RHEL)
sudo firewall-cmd --permanent --add-port=2222/tcp sudo firewall-cmd --reload
使用iptables
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT sudo service iptables save
5. 重启 SSH 服务
修改配置后,需要重启 SSH 服务使更改生效:
sudo systemctl restart sshd
6. 测试新端口
使用 ssh 命令测试新端口是否生效:
ssh username@your_server_ip -p 2222
- 将
username替换为你的用户名,your_server_ip替换为服务器 IP 地址。 - 如果连接成功,说明新端口配置正确。
7. (可选)禁用默认端口
如果希望完全禁用默认的 22 端口,可以在 SSH 配置文件中注释掉或删除 Port 22,然后重启 SSH 服务。
注意事项
- 备份配置文件:在修改前,建议备份 SSH 配置文件:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
- 确保新端口未被占用:使用以下命令检查端口是否已被占用:
sudo netstat -tuln | grep 2222
- 防止锁定自己:在测试新端口之前,确保当前 SSH 会话不会断开,或者通过其他方式(如控制台)访问服务器,以防配置错误导致无法连接。
通过以上步骤,你可以成功增加或更改 SSH 访问端口,提升系统的安全性。
遇到问题1
修改ssh端口后,启动失败失败,报错error: Bind to port 2222 on :: failed: Permission denied.
(base) [root@node-01 wangzy-p]# systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2025-01-21 00:29:06 CST; 1s ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 147506 (sshd)
Tasks: 1
Memory: 1.1M
CGroup: /system.slice/sshd.service
└─147506 /usr/sbin/sshd -D
Jan 21 00:29:06 node-01 systemd[1]: Starting OpenSSH server daemon...
Jan 21 00:29:06 node-01 sshd[147506]: /etc/ssh/sshd_config line 10: Deprecated option RSA...ion
Jan 21 00:29:06 node-01 sshd[147506]: Could not load host key: /etc/ssh/ssh_host_dsa_key
Jan 21 00:29:06 node-01 sshd[147506]: error: Bind to port 2222 on 0.0.0.0 failed: Permis...ed.
Jan 21 00:29:06 node-01 sshd[147506]: error: Bind to port 2222 on :: failed: Permission ...ed.
Jan 21 00:29:06 node-01 sshd[147506]: Server listening on 0.0.0.0 port 22.
解决方案:
iptables -F setenforce 0 systemctl restart sshd
这三行代码分别用于 清空防火墙规则、关闭 SELinux 的强制模式 和 重启 SSH 服务。以下是每行代码的详细解释:
iptables -F
- 作用:清空
iptables的所有防火墙规则。 - 解释:
iptables是 Linux 系统中用于管理网络流量(如防火墙规则)的工具。-F参数表示flush,即清空指定链(chain)中的所有规则。如果不指定链,默认清空所有链(如INPUT、OUTPUT、FORWARD等)。- 执行后,所有自定义的防火墙规则将被删除,系统将恢复到默认的允许所有流量的状态。
- 使用场景:
- 当需要快速清除所有防火墙规则时。
- 在调试网络问题时,排除防火墙规则的影响。
setenforce 0
- 作用:将 SELinux 的模式设置为 宽松模式(Permissive Mode)。
- 解释:
- SELinux(Security-Enhanced Linux)是 Linux 的一个安全模块,用于提供更严格的访问控制。
- SELinux 有三种模式:
- Enforcing:强制模式,所有违反策略的操作都会被阻止并记录。
- Permissive:宽松模式,违反策略的操作不会被阻止,但会记录日志。
- Disabled:完全禁用 SELinux。
setenforce 0将 SELinux 设置为宽松模式,允许所有操作,但仍会记录日志。
- 使用场景:
- 当 SELinux 阻止某些操作时,可以临时设置为宽松模式以排查问题。
- 在调试或测试环境中,避免 SELinux 的严格限制。
systemctl restart sshd
- 作用:重启 SSH 服务。
- 解释:
systemctl是 Linux 系统中用于管理系统服务的命令。sshd是 SSH 服务的名称,负责处理远程登录请求。restart参数表示重启服务(先停止,再启动)。- 执行后,SSH 服务会重新加载配置文件并重新启动。
- 使用场景:
- 修改 SSH 配置文件(如
/etc/ssh/sshd_config)后,需要重启服务使更改生效。 - 当 SSH 服务出现问题时,重启服务以恢复功能。
- 修改 SSH 配置文件(如
注意:
iptables -F会清空所有防火墙规则,可能导致系统暴露在网络中。建议在执行前备份规则,或确保系统处于安全环境中。setenforce 0是临时修改 SELinux 模式,重启系统后会恢复为原模式。如果需要永久修改,可以编辑/etc/selinux/config文件。systemctl restart sshd会中断当前的 SSH 连接。如果正在通过 SSH 操作服务器,建议使用systemctl reload sshd重新加载配置而不中断服务。
通过这三行代码,可以快速清空防火墙规则、关闭 SELinux 的强制模式并重启 SSH 服务,适用于调试或配置系统时的常见操作。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
environments was not found on the java.library.path 问题的解决方法
The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path 问题的解决方法,需要的朋友可以参考下2016-08-08
Ubuntu系统日志配置 /var/log/messages的方法
今天小编就为大家分享一篇Ubuntu系统日志配置 /var/log/messages的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-07-07


最新评论