如何在CentOS 7上配置SSH以使用其他端口

在本指南中,我们将学习如何在CentOS 7上配置SSH以使用其他端口。

即使将SSH服务器配置为在默认端口22之外的其他端口上侦听,从安全角度来看可能不会给您带来太多好处,但是它仍然具有一些优势;例如,

  • 通过保护服务器免受针对默认端口上运行的服务的自动随机攻击,针对与特定版本的OpenSSH及其加密库有关的漏洞的利用的攻击来减少攻击面,
  • 减少日志文件的大小,因为它停止了针对默认SSH端口的暴力破解失败的登录尝试。

配置SSH以在CentOS 7上使用其他端口

逐步阅读本指南,以了解如何配置SSH服务器以侦听其他端口。

  1. 登录您的服务器并打开OpenSSH服务器配置文件, / etc / ssh / sshd_config 进行编辑。
    vim /etc/ssh/sshd_config
  2. 取消注释行, #端口22 并将其设置为所需的端口。 但是为了安全起见,以防万一,请将sshd配置为侦听两个端口(默认端口和所需的端口),以使您的配置文件具有如下所示的两行。确认新端口正常后,请删除默认端口设置。
    Port 22
    Port 3456 <where 3456 is your preferred port>

    注意:

    • 确保没有其他服务正在使用新端口。
    • 相应地更换端口。
  3. 如果防火墙正在运行,请允许新端口通过。
    firewall-cmd --add-port=3456/tcp --permanent
    firewall-cmd --reload
  4. 重新启动sshd服务
    systemctl restart sshd
  5. 如果通过重新启动sshd遇到了这样的错误;
    Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.

    并通过运行 journalctl -xe 根据建议,您发现由于SELinux权限,sshd无法以新端口集启动,如以下journalctl输出所示;

    # journalctl -xe 
    ...output snipped...
    Sep 16 08:21:12 server1 kernel: type=1400 audit(1537086072.510:4): avc: denied { name_bind } for pid=1074 comm="sshd" src=6378 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:unres
    Sep 16 08:21:12 server1 sshd[1074]: error: Bind to port 6378 on 0.0.0.0 failed: Permission denied.
    Sep 16 08:21:12 server1 sshd[1074]: error: Bind to port 6378 on :: failed: Permission denied.
    Sep 16 08:21:12 server1 kernel: type=1400 audit(1537086072.515:5): avc: denied { name_bind } for pid=1074 comm="sshd" src=6378 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:unres
    Sep 16 08:21:12 server1 sshd[1074]: fatal: Cannot bind any address.
    Sep 16 08:21:12 server1 systemd[1]: sshd.service: main process exited, code=exited, status=255/n/a
    Sep 16 08:21:12 server1 systemd[1]: Failed to start OpenSSH server daemon.
    ...output snipped...

    这是解决此问题的方法。您需要通过运行以下命令来告知SELinux此更改。

    semanage port -a -t ssh_port_t -p tcp 3456

    现在,验证SELinux允许sshd监听两个端口:

    semanage port -l | grep ssh
    ssh_port_t  tcp      3456, 22

    如果找不到semanage命令,请检查哪个软件包提供了semanage并安装该软件包;

    yum whatprovides semanage
    ...output snipped...
    policycoreutils-python-2.5-22.el7.x86_64 : SELinux policy core python utilities
    Repo : base
    Matched from:
    Filename : /usr/sbin/semanage
    yum install -y policycoreutils-python
  6. 测试您是否可以使用新的SSH端口登录服务器
    ssh -p 3456 [email protected]

    如果成功,请继续并通过在sshd配置文件中注释掉来删除默认端口,或将其阻止在防火墙上。记住在更改之后重新启动sshd或分别重新加载防火墙。

这标志着我们有关如何配置SSH以在CentOS 7上使用其他端口的简单指南的结尾。

其他SSH教程

通过SSH隧道连接到VNC服务器

使用Nagios监控Linux主机check_by_ssh插件

在Linux中配置SSH公钥身份验证

如何通过鳄梨调味酱启用RDP / SSH文件传输

Sidebar