Linux:设置 SSH
SSH 协议允许 Linux 管理员从自己的命令行终端登录任意数量的远程系统。 SSH 是一种客户端-服务器服务,通过网络连接提供安全、加密的连接。这允许我们通过终端访问其他 Linux 系统或任何接受 SSH 连接的设备,例如路由器和防火墙以及其他操作系统。
如果用户想要允许传入连接,还可以在自己的计算机上设置 SSH 服务器。如果您想在离开办公桌时访问您的计算机,或者您的系统上有其他用户需要使用该计算机,这会很有用。在本教程中,我们将逐步介绍如何在所有主要 Linux 发行版上将 SSH 设置为客户端和服务器。
你知道吗?
SSH协议除了为我们提供安全加密的方式登录远程系统外,还可以用于端口转发,这使得我们可以加密几乎任何协议的两个系统之间的流量。
在本教程中您将学习:
如何在所有主要 Linux 发行版上安装 SSH 客户端和服务器
如何使用
ssh
命令登录远程服务器如何启动、停止、启用和禁用 SSH 服务
如何允许传入的 SSH 连接通过系统防火墙
SSH 服务器配置和安全建议
如何在 Linux 上安装 SSH
我们需要做的第一件事是安装 SSH。有单独的软件包可用,具体取决于您是否要安装客户端软件包、服务器软件包或两者。
OpenSSH 客户端包将允许您使用 SSH 登录或启动与远程系统的连接。
OpenSSH Server 软件包将允许您设置 SSH 服务并接受传入连接。如果您只打算使用 SSH 作为客户端,则没有必要(或建议)安装此软件包。
SSH 命令通常在所有 Linux 发行版上默认可用,但如果您的系统没有该命令,您可以使用下面相应的命令通过系统的包管理器安装 OpenSSH 客户端包。下面每个示例中的第二个命令将安装服务器包(如果不需要,请跳过)。
要在 Ubuntu、Debian 和 Linux Mint 上安装 OpenSSH 客户端和服务器:
$ sudo apt update
$ sudo apt install openssh-client
$ sudo apt install openssh-server
要在 Fedora、CentOS、AlmaLinux 和 Red Hat 上安装 OpenSSH 客户端和服务器:
$ sudo dnf install openssh
$ sudo dnf install openssh-server
要在 Arch Linux 和 Manjaro 上安装 OpenSSH 客户端和服务器:
$ sudo pacman -S openssh # all in one package
使用 SSH 命令
现在SSH已经安装完毕,我们可以使用
ssh
命令连接到远程服务器并登录。基本语法如下,其中user
是用户名,linuxconfig.org
是远程服务器。您还可以使用 IP 地址代替主机名。$ ssh user@linuxconfig.org
SSH 侦听的默认端口是 22。如果远程系统在某个非默认端口上运行 SSH 服务,您可以在命令中使用
-p
选项指定该端口。以下示例显示如何通过 SSH 连接到在端口 2210 上运行该服务的远程系统。$ ssh -p 2210 user@linuxconfig.org
安装 SSH 还可以让我们访问 scp 命令。 Linux 中的 scp 命令用于将文件和目录复制到远程系统或从远程系统复制文件和目录。它的工作方式与 cp 命令非常相似,不同之处在于它将文件复制到本地网络或互联网上的其他系统或从其他系统复制文件。让我们看一个简单的示例,其中使用 scp 命令将名为
file.txt
的本地文件复制到主机名为linuxconfig.org
的远程服务器。$ scp file.txt user@linuxconfig:/path/to/dest
注意 – 无密码登录
如果您厌倦了每次都输入密码,您可以使用 RSA 密钥进行身份验证。
如何配置 SSH 服务器
为了允许用户通过 SSH 登录您的系统,我们将在下面的步骤中向您展示如何控制服务并允许通过防火墙进行连接。
要开始接受传入的 SSH 连接,我们需要使用 systemctl 命令启动 SSH 服务。启动或停止 SSH 服务器:
$ sudo systemctl start sshd AND $ sudo systemctl stop sshd
启用(使 SSH 在系统启动时自动启动)或禁用 SSH 服务器:
$ sudo systemctl enable ssh OR $ sudo systemctl disable ssh
使用
systemctl status
命令检查SSH服务器是否正在运行。$ sudo systemctl status ssh
为了接受传入连接,您还需要允许该服务通过系统防火墙。执行此操作的命令可能会有所不同,具体取决于您的 Linux 发行版。使用下面合适的。
在 Ubuntu 和使用 ufw(简单防火墙)的系统上:
$ sudo ufw allow ssh
在基于 RHEL 的发行版或任何其他使用 firewalld 的发行版上:
$ sudo firewall-cmd --zone=public --permanent --add-service=ssh $ sudo firewall-cmd --reload
或者,如果您只使用 iptables 而没有防火墙前端:
$ sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT
这里的所有都是它的。只要没有物理路由器或防火墙阻止与 SSH 服务器的连接,它就应该准备好接受传入连接。
进一步的 SSH 服务器建议
当您的 SSH 服务器准备好接受传入连接时,您可以应用一些配置和安全建议。我们在下面整理了一些最重要的内容,并为您提供了更深入的教程的链接以供进一步阅读:
如何充分利用 OpenSSH – 使用
scp
在计算机之间复制文件、基于密钥的身份验证、保存登录信息、通过 SSH 挂载文件系统SSH 远程登录语法和示例 – 启用 root 登录、通过 SSH 执行命令、通过 SSH 使用 tar、添加 SSH 别名
如何保护 SSH 最佳实践 – 使用 SSH 密钥、更改默认端口、允许特定用户登录
结束语
在本教程中,我们了解了如何在 Linux 系统上设置 SSH。这包括使用 SSH 作为客户端包和 ssh 命令,以及将 SSH 设置为侦听传入连接的服务。 SSH 是大多数 Linux 系统的基本协议,因为它允许您向任意数量的系统打开远程终端,或通过互联网管理您自己的系统。我们还可以做其他方便的事情,例如远程复制文件,或为其他协议创建加密隧道。