潮流有货 2025-07-03 22:20 采纳率: 97.8%
浏览 30
已采纳

如何修改sshd和ssh的默认端口号?

**问题:如何在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。请按照以下步骤操作:

    1. 使用文本编辑器打开配置文件:
      sudo vi /etc/ssh/sshd_config
    2. 找到如下行并取消注释(如果被注释),然后修改端口号为期望值(例如 2222):
      #Port 22 → Port 2222
    3. 保存并退出编辑器。
    4. 重启SSH服务以应用更改:
      sudo systemctl restart sshd

    2. 配置防火墙放行新端口

    修改端口后,必须确保防火墙允许新端口通过。以下是不同系统下的配置方法:

    系统类型命令示例
    CentOS/RHEL 7+/Firewalldsudo firewall-cmd --permanent --add-port=2222/tcp
    sudo firewall-cmd --reload
    Ubuntu/Debian UFWsudo ufw allow 2222/tcp
    Iptablessudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT

    3. 客户端连接时指定非默认端口

    在客户端使用 ssh 命令连接时,可通过 -p 参数指定目标主机使用的端口号:

    ssh username@remote_host -p 2222

    也可以在本地用户目录下配置 ~/.ssh/config 文件,实现自动识别端口:

    Host myserver
        HostName remote_host
        User username
        Port 2222

    4. 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. 验证与测试

    完成上述所有步骤后,建议执行以下验证操作:

    1. 检查 sshd 是否正在监听新端口:
      sudo ss -tuln | grep 2222
    2. 尝试从另一台机器使用新端口连接:
      ssh username@your_server_ip -p 2222
    3. 查看日志确认无异常:
      sudo journalctl -u sshd
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 7月3日