Centos7.x、8.x修改SSH端口

  1. 修改ssh端口

    vi /etc/ssh/sshd_config 
    

    找到

    #Port 22 
    

    修改为:

    Port 22     //使端口22继续生效
    Port 2222    //修改为你想要的端口号
    
  2. 修改firewall配置 firewall添加修改的ssh端口:

    firewall-cmd --zone=public --add-port=2222/tcp --permanent
    

    重启:

    firewall-cmd --reload 
    

    查看添加端口是否成功,如果添加成功则会显示yes,否则no

    firewall-cmd --zone=public --query-port=2222/tcp
    
  3. 修改SELinux 检查semanage是否安装

    rpm -qa |grep policycoreutils-python 
    # 若未安装,请先安装工具包
    yum install -y policycoreutils-python 
    

    查看当前selinux允许的端口

    semanage port -l |grep ssh 
    

    添加新端口

    semanage port -a -t ssh_port_t -p tcp 2222
    

    检查是否添加成功

    semanage port -l |grep ssh 
    
  4. 重启SSH、防火墙服务

    systemctl restart sshd.service
    systemctl restart firewalld.service
    
  5. sshd_config 关闭22端口

    vi /etc/ssh/sshd_config
    # 注释Port 22
    # Port 22
    重启SSH服务
    systemctl restart sshd.service
    
  6. firewall 删除的22端口

    先查看
    firewall-cmd --zone=public --query-port=22/tcp
    删除
    firewall-cmd --zone=public --remove-port=22/tcp --permanent
    再查看
    firewall-cmd --zone=public --query-port=22/tcp
    重新载入
    firewall-cmd --reload
    

注意:

SSH端口默认是22,如果要修改端口,可先增加一个端口,方法如上,使用新端口登录后再把22端口注释掉(注意同时修改防火墙# firewall-cmd --zone=public --remove-port=22/tcp --permanent,再重新加载# firewall-cmd --reload)。如果是增加端口号,需要先取消22端口的#号,再另起一行新增一个port端口。

若想删除已停用的端口可使用-d删除命令,# semanage port -d -t ssh_port_t -p tcp 2222

若想添加其他已定义的端口(如443)到SSH,可使用-m修改命令,# semanage port -m -t ssh_port_t -p tcp 443

直接使用-a命令添加443端口会报错:ValueError: Port tcp/443 already defined

一般停用默认端口后我们会想到从selinux中删除22端口,但在执行# semanage port -d -t ssh_port_t -p tcp 22命令后会报以下错误:ValueError: Port tcp/22 is defined in policy, cannot be deleted而无法删除。暂时无法实现。