「新手教程」修改SSH端口(含一键脚本)


  • 管理员

    【合集】「新手教程」主机入门指南

    SSH默认的端口是22,如果不改的话会一直被扫,不仅不安全,还会消耗系统资源,所以最好改一下。

    CentOS/Debian/Ubuntu 一键脚本

    wget https://ssh.easy-use.ml/ssh-go.sh && bash ssh-go.sh
    你可以使用上面这个一键脚本来管理ssh,不过这样做虽然省事,但是学不到什么东西,所以我还是来详细讲一下。

    手动教程

    过程基本分为四步,目标是把端口由22改为2222

    1. 修改SSH端口
    2. 配置SELinux端口
    3. 打开防火墙端口
    4. 禁用22端口

    修改SSH端口

    一般情况下,ssh的配置文件是 /etc/ssh/sshd_config/etc/sshd/sshd_config,不同系统可能不太一样。需要你找到这个配置文件,并使用vi或其它文本编辑软件打开它。

    0_1529047587156_a3d49c74-077f-4805-bad4-0896acb6b7c0-image.png

    找到#Port 22的一行,这里的#是注释,我们把注释去掉,并在Port 22下面加一行Port 2222,这里保留22端口是防止有什么意外导致连不上主机。

    0_1529047598592_728a4d63-69ba-44c7-92f6-30b65fc4f78e-image.png

    修改好了以后就保存并重启sshd服务service sshd restart

    配置SELinux端口

    如果你观察仔细的话,可以看到Port 22上面有几行英文,告诉你如果要更改SSH端口需要告诉SELinux。

    If you want to change the port on a SELinux system, you have to tell
    SELinux about this change.
    semanage port -a -t ssh_port_t -p tcp #PORTNUMBER

    我们要用2222作为SSH端口,就需要运行semanage port -a -t ssh_port_t -p tcp 2222

    Centos7 系统可能没有内置semanage,需要手动安装yum install policycoreutils-python -y

    出现以下错误说明你的系统没有启用SELinux,不用管直接下一步

    [[email protected] ~]# semanage port -a -t ssh_port_t -p tcp 2222
    SELinux: Could not downgrade policy file /etc/selinux/targeted/policy/policy.30, searching for an older version.
    SELinux: Could not open policy file <= /etc/selinux/targeted/policy/policy.30: No such file or directory
    /sbin/load_policy: Can't load policy: No such file or directory
    libsemanage.semanage_reload_policy: load_policy returned error code 2. (No such file or directory).
    SELinux: Could not downgrade policy file /etc/selinux/targeted/policy/policy.30, searching for an older version.
    SELinux: Could not open policy file <= /etc/selinux/targeted/policy/policy.30: No such file or directory
    /sbin/load_policy: Can't load policy: No such file or directory
    libsemanage.semanage_reload_policy: load_policy returned error code 2. (No such file or directory).
    OSError: No such file or directory

    打开防火墙端口

    如果使用的防火墙是firewalld,那么添加端口firewall-cmd --permanent --zone=public --add-port=2222/tcp,再firewall-cmd --reload一下,就可以开放2222端口了

    iptables也差不多,iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 2222 -j ACCEPT添加端口,再重启服务service iptables restart,就可以了

    禁用22端口

    先去SSH配置文件那里把之前保留的Port 22删除,并重启sshd服务service sshd restart

    然后在防火墙禁用22端口
    firewall-cmd --permanent --zone=public --remove-port=22/tcpiptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j DROP

    就完成了


    除此之外, 还可以设置SSH使用公钥登录主机


  • 管理员

    参考

    来自@dz_paji

    看到版主发了个修改端口的一键脚本。修改ssh端口确实很有必要,但我个人不太喜欢一键脚本。何况手动改改又不麻烦 就写个教程好了

    本文适用于CentOS系统 其他系统可能略有变动

    首先 先装好文本编辑器nano(你要是很喜欢用vim我也没意见
    yum -y install nano
    ssh的配置文件是 /etc/sshd/sshd_config 所以我们执行 nano /etc/sshd/sshd_config 去编辑它
    如果没有什么问题的话 你应该能看到一个这样的界面
    0_1529047619377_3dead1e9-f1aa-47ca-b0db-4de4a315c028-image.png
    0_1529047638642_486ddc1c-6e78-4711-a66e-3b3f40794319-image.png
    #Port 22# 删掉,使之变成 Port 22. 在这一行末尾回车,另起一行, 输入 Port 新ssh端口号 这里我把新ssh端口号设为 5678 Ctrl + X 保存
    这里解释一下为什么
    如果你没有删去 #Port 22 前面的 # 号,而恰好你又没有成功修改防火墙,那么恭喜你,你连不上你的服务器了。(当然 通过VNC和紧急模式还是能救回来的
    下面修改你的防火墙规则,放行新的端口
    nano /etc/sysconfig/iptables
    找地方插入一行( 个人喜欢放在所有tcp规则的下面
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 新ssh端口号 -j ACCEPT
    Ctrl + x保存
    service iptables restart
    service sshd restart
    重启服务载入新配置
    现在尝试通过新端口登陆ssh应该就能成功了
    但这还没有结束
    因为刚刚我们把 #Port 22 改成了 Port 22 ,现在22端口还是开着ssh,我们要再把 # 添加回去。要不然改了和没改一样。操作和上面没啥区别,这里就不另写了

    希望对你有所帮助 🙂

    https://sebastianblade.com/how-to-modify-ssh-port-in-centos7/



  • 说一下,EASY TO USE系列脚本均不支持CentOS


 

友情链接:哈陆lu的博客 WebSocks 主机博客 Mr.Kevin 逗比根据地

本论坛所有内容除特殊注明均为原创。除作者特殊要求外,本站所有内容采用知识共享署名 4.0 国际许可协议进行许可。
知识共享许可协议