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 -tsudo 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 firewalldsudo 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=sshsudo firewall-cmd --reload
关于防火墙的设置,也可参考我们之前的文章:
Linux防火墙: 关于 iptables 和 firewalld, 你需要知道什么
以上就是本次分享全部内容,欢迎讨论。




