Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > linux ssh增加访问端口

linux ssh如何实现增加访问端口

作者:AI专题精讲

Linux中SSH默认使用22端口,为了增强安全性或满足特定需求,可以通过修改SSH配置来增加或更改SSH访问端口,具体步骤包括修改SSH配置文件、增加或修改端口、保存并退出编辑器、更新防火墙规则、重启SSH服务、测试新端口以及(可选)禁用默认端口

在 Linux 系统中,SSH 默认使用 22 端口

为了增强安全性或满足特定需求,可以通过修改 SSH 配置来增加或更改 SSH 访问端口。

以下是具体步骤:

1. 修改 SSH 配置文件

SSH 的配置文件通常位于 /etc/ssh/sshd_config。使用文本编辑器(如 vimnano)打开该文件:

sudo vim /etc/ssh/sshd_config

2. 增加或修改端口

在配置文件中找到 Port 配置项。如果不存在,可以手动添加。例如,增加一个额外的端口 2222

Port 22
Port 2222

3. 保存并退出编辑器

4. 更新防火墙规则

如果系统启用了防火墙(如 ufwfirewalld),需要允许新端口通过防火墙。

使用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

7. (可选)禁用默认端口

如果希望完全禁用默认的 22 端口,可以在 SSH 配置文件中注释掉或删除 Port 22,然后重启 SSH 服务。

注意事项

  1. 备份配置文件:在修改前,建议备份 SSH 配置文件:
    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
    
  2. 确保新端口未被占用:使用以下命令检查端口是否已被占用:
    sudo netstat -tuln | grep 2222
    
  3. 防止锁定自己:在测试新端口之前,确保当前 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 服务。以下是每行代码的详细解释:

  1. iptables -F
  1. setenforce 0
  1. systemctl restart sshd

注意:

  1. iptables -F 会清空所有防火墙规则,可能导致系统暴露在网络中。建议在执行前备份规则,或确保系统处于安全环境中。
  2. setenforce 0 是临时修改 SELinux 模式,重启系统后会恢复为原模式。如果需要永久修改,可以编辑 /etc/selinux/config 文件。
  3. systemctl restart sshd 会中断当前的 SSH 连接。如果正在通过 SSH 操作服务器,建议使用 systemctl reload sshd 重新加载配置而不中断服务。

通过这三行代码,可以快速清空防火墙规则、关闭 SELinux 的强制模式并重启 SSH 服务,适用于调试或配置系统时的常见操作。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文