暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何在 CentOS 和 RHEL 上设置 SSH

TIAP 2022-07-22
552

SSH(Secure Shell) 是一种基于客户端/服务器架构的安全网络协议,可以让我们通过网络安全的访问远程服务器,方便系统管理员 随时随地轻松、安全的远程管理服务器和应用程序。

今天我们来介绍一下如何在 CentOS 或者 REHL 系统上设置和启动 SSH。启用 SSH 后,我们就能够使用其 IP 地址从其他计算机上访问这个系统。

除此以外,还会介绍如何更改默认的 SSH 端口、禁用 root 账户登录 SSH,以及设置防火墙以保护服务器。

要实际完成以上操作,需要具备以下条件:

1)需要一台 CentOS(或者 REEL)系统的机器,可以是物理机,也可以是虚拟机,也可以是各运营商提供的云服务器(但是通常他们都已经安装完 SSH了);

2)具有 root 权限的非 root 用户,此用户将用于修改系统,然后,还可以登录到服务器。


安装 OpenSSH

OpenSSH 是 SSH 协议最流行的软件包之一,有数百万Linux服务器使用,是服务器环境的主要部分。一般情况下,OpenSSH 可用于大多数 Linux 发行版,包括 CentOS 和 RHEL 系统。

首先,使用 dnf 包管理器更新包索引:

    sudo dnf check-update

    然后,使用如下命令在 CentOS/RHEL 系统上安装 OpenSSH 包。此命令将会同时安装 OpenSSH 服务器以及客户端软件:

      sudo dnf install openssh-server openssh-clients -y

      OpenSSH 安装完成后,执行如下命令启动 sshd 服务,并使其在系统启动时自动启动:

        sudo systemctl enable --now sshd

        现在,通过如下命令来验证 sshd 服务的状态:

          sudo systemctl status sshd

          如果正常的话,你会看到如下图所示的输出,表示 sshd 服务处于激活状态(active running):


          配置 SSH 服务器

          默认情况下,SSH 的配置在 /etc/ssh 目录下,主要的配置文件是 sshd_config。该文件包含一些基本的 SSH 配置,比如设置 SSH 服务的 IP 地址的配置项 ListenAddress,设置端口号的配置项 Port,身份验证的配置项等等。


          现在我们来看一下怎样配置 sshd_config,更改默认的 ssh 端口并禁用 root 用户登录。之所以要修改默认端口和禁用root登录,是出于安全的考虑,提高服务器安全性能能并减少对服务器的暴力攻击。

          首先,使用 vi(或者vim)来打开 sshd_config

            sudo vi etc/ssh/sshd_config

            ssh 的默认端口为22,我们把它改成其他的值。本例中我们将其改为 2028。

              Port 2028

              需要注意的一点是,一定要确保在此系统上有具有 sudo 访问权限的非 root 用户。否则,如果禁用 root 登录,那么可能就无法远程登录到服务器了。

              然后,找到 PermitRootLogin 配置项,将其后面的值由 yes 改为 no,或者直接将这个配置项注释掉(前面加个 # 号)。

              PermitRootLogin no

              修改完成后,保存并关闭文件。

              验证 ssh 配置,然后重启 sshd 服务:

                sshd -t
                sudo systemctl restart sshd


                那么现在,就可以通过下面的命令连接到服务器了:

                  ssh username@SERVER-IP -p PORT

                  根据上述命令,我们也可以得知,-p 选项用于指定 ssh 服务器的端口。


                  以上我们介绍了如何更改 ssh 的端口并禁止 root 用户登录来保护 ssh 服务器的基本配置。接下来我们再来了解一下如何安装和配置 firewalld。


                  安装和配置Firewalld

                  如果你的服务器接入了互联网,那最好需要安装并启用防火墙(firewall),这将通过限制对 ssh、http 和 https 等服务的访问来提高服务器的安全性。在 CentOS 上,firewalld 是默认的防火墙软件包。

                  下面我们将介绍安装 firewalld 服务,并开放 ssh 服务的端口号。

                  在 CentOS 中使用 dnf 来安装 firewalld:

                    sudo dnf install firewalld -y

                    firewalld 安装完成后,启用firewalld服务,使用下面的命令来验证:


                      sudo systemctl enable --now firewalld
                      sudo systemctl status firewalld

                      正常的话,将会看到如下输出,说明 firewalld 处于启动状态 active (running)


                      要与 firewalld 交互,可以使用命令 firewall-cmd,它是用于管理防火墙规则的命令行界面,使用它可以添加、删除和修改 firewalld 规则,还可以做很多其他的事情。

                      现在,我们将 ssh 服务的端口添加到 firewalld 规则中,使用如下的命令:

                        sudo firewall-cmd --add-port=2028/tcp --permanent

                        回车后,会看到一个输出提示:success,这表示操作成功完成。


                        注意上面的端口 2028 是我们在配置ssh服务的时候设置的端口。ssh 服务在 tcp 端口上运行,因此需要指定端口和协议,例如 2028/tcp。选项 --permanent 表示该规则为永久的。

                        接下来,重启防火墙:

                          sudo firewall-cmd --reload

                          现在就将 ssh 自定义端口添加到了 firewalld 规则中,执行如下命令可以列出防火墙中所有启用的规则列表:

                            sudo firewall-cmd --list-all


                            要删除 ssh 规则,可使用如下命令,然后重启防火墙:

                              sudo firewall-cmd --permanent --remove-service=ssh
                              sudo firewall-cmd --reload


                              关于防火墙的设置,也可参考我们之前的文章:

                              Linux防火墙: 关于 iptables 和 firewalld, 你需要知道什么

                              Linux中关于防火墙的操作


                              以上就是本次分享全部内容,欢迎讨论。


                              文章转载自TIAP,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                              评论