SSH 代表安全外壳(Secure Shell)。顾名思义,SSH 旨在远程访问 Windows、macOS、Linux(CentOS、Ubuntu 等)和其他操作系统上的服务器或桌面 Shell。它是一种网络协议,意味着它是一套规则,用于在客户端和服务器之间建立安全且加密的连接。使用 SSH 的关键好处是能够在不安全的网络(如互联网)上安全地传输数据。它非常有用,可以连接远程计算机并通过命令行安全地访问它们。我们还可以使用它在可疑的网络上传输文件。这就是为什么大多数数据中心和云管理员使用它来远程访问服务器的原因。以下是在 CentOS 8 Linux 上安装 OpenSSH 服务器的步骤。此软件包使用 SSH(安全外壳协议)在网络客户端-服务器架构中提供安全通道。在 CentOS 8 Linux 上启用 SSH
以下安装 OpenSSH 服务器的步骤不仅适用于 CentOS 8,也适用于 7 和 6 等早期版本。1. 安装 OpenSSH 服务器
在 CentOS 8 上打开命令终端,如果您使用的是 CLI 版本,则已经在那里了。安装 OpenSSH 非常简单,因为它已经在 CentOS 的官方仓库中。因此,一个命令即可将其安装到您的机器上。sudo dnf -y install openssh-server
此命令将同时安装 OpenSSH 客户端和服务器守护进程(sshd)。2. 在 CentOS 上启动 SSH 服务
安装完成后,我们需要启动 OpenSSH 服务,否则我们将无法通过 Windows、Linux 或其他系统的客户端工具访问它。然而,成功启动后,我们就可以轻松连接并建立安全连接。因此,运行以下命令:sudo systemctl start sshd
3. 检查 sshd 状态
为了在启动 SSH 服务后确认其是否正常工作,运行以下命令:sudo systemctl status sshd
您将在屏幕上看到绿色的 “active (running)” 文本,这将确认一切正常。4. 在启动级别启用 OpenSSH 服务
如果您希望每次重启系统时自动启动 SSH,那么使用以下命令。这也将确保您无需每次都手动启动它。sudo systemctl enable sshd
sudo systemctl disable sshd
5. 允许防火墙中的端口 22
如果在执行所有步骤后,由于防火墙问题,您仍然无法从客户端访问 SSH 服务器,那么请允许它。要在 CentOS 8 Linux 中允许 SSH 端口 22,运行:firewall-cmd --zone=public --add-port=22/tcp --permanent
6. 连接到 SSH 服务器
要通过 SSH 访问 CentOS,请在 Windows 中打开命令提示符或在 Linux 中打开终端,并输入以下语法的命令:ssh username@server-IP-address
例如,假设用户名为 root,服务器地址为 192.168.0.12,那么命令如下:如果您将默认端口 22 更改为其他端口,则命令如下:ssh root@192.168.0.12:*port*
7. 更改 CentOS 8/7 的默认 SSH 端口(可选)
默认情况下,SSH 使用的端口是 22。然而,为了提高安全性,您可以将其更改为其他端口。为此,请编辑 SSHD 配置文件。sudo vi /etc/ssh/sshd_config
并将 SSHD 22 端口更改为其他端口,例如 5678。
Redirecting to /bin/systemctl restart sshd.serviceJob for sshd.service failed because the control process exited with error code.See "systemctl status sshd.service" and "journalctl -xe" for details.
这意味着您需要通过告知系统您为服务添加了新端口来为其提供 SELinux 权限。semanage port -a -t ssh_port_t -p tcp 5678
注意:将 5678 替换为您在上述 sshd 配置文件中输入的端口号。ValueError: Port tcp/5678 already defined
这意味着您选择用于 SSH 服务的端口已被分配或保留给其他服务。因此,请更改配置文件中的端口号,并再次运行 semanage port 命令。一旦成功添加,检查 SELinux 在您的系统上为 SSHD 服务允许哪些端口:semanage port -l | grep ssh
9. 阻止默认的 CentOS 端口 22
由于我们为单个安全外壳服务拥有两个端口,因此我们可以永久阻止默认端口 22。这将提高系统的安全性,并让我们仅使用一个自定义端口号来服务。firewall-cmd --direct --add-rule ipv4 filter INPUT -p tcp --dport 22 -j REJECT
现在,允许您在防火墙中创建的自定义端口号,对于我们的情况,它是 5678。firewall-cmd --add-port=5678/tcp --permanentfirewall-cmd --reload
现在,您将无法通过默认端口连接,如果您尝试,将出现错误:ssh: connect to host 192.168.0.107 port 22: Connection refused
要使用自定义 SSH 端口连接,请使用以下命令语法:ssh -p 5678 username@server-address
在上述命令中,5678 是端口号,因此请将其替换为您使用的端口号。ssh -p 5678 root@192.168.0.107
10. 禁用 root 登录(可选)
为了进一步提高服务器的安全性,您可以禁用 SSH 上的 root 用户访问。这意味着远程用户只能使用非 root 用户访问和控制服务器。sudo vi /etc/ssh/sshd_config
使用箭头键找到以下行:“PermitRootLogin=yes”。11. 卸载 OpenSSH
dnf remove openssh-server