如何在 Ubuntu 上启用 SSH?

linuxoperating systemopen source

简介

安全 Shell (SSH) 是一种加密网络协议,允许通过不安全的网络安全地远程访问计算机或服务器。它在两台设备之间提供安全加密的通道,可用于各种用途,例如远程运行命令或在设备之间安全地传输文件。

SSH 旨在取代 Telnet、FTP 和 Rlogin,这些协议传输纯文本数据,因此很容易被攻击者拦截。对于需要以安全方式访问远程服务器的系统管理员、开发人员和用户来说,SSH 是一款必备工具。

检查 Ubuntu 上是否安装了 SSH

SSH 是一种常用的服务器安全远程访问协议,也是系统管理员的必备工具。在 Ubuntu 上启用 SSH 之前,您需要检查它是否已安装。

您可以通过在终端中运行一个简单的命令轻松检查系统上是否安装了 OpenSSH 服务器软件包 -

sudo apt-get update
sudo apt-get install openssh-server

此命令将首先更新软件包列表,然后安装尚未安装的 OpenSSH 服务器。

使用命令行检查 SSH 是否已安装

如果您想验证 SSH 是否已安装,您可以在终端中使用一个简单的命令 -

ssh -V

此命令将显示系统上当前安装的 OpenSSH 客户端的版本。如果您看到类似"找不到命令"或"找不到软件包"之类的消息,则表示您的 Ubuntu 系统上当前未安装 SSH。

如果尚未安装 SSH,请安装

如果您确定您的 Ubuntu 计算机上尚未安装 OpenSSH 服务器,您可以在终端中使用几个简单的命令进行安装 -

sudo apt-get update
sudo apt-get install openssh-server

第一个命令将确保您系统中的所有存储库都是最新的;此步骤可能需要几分钟,具体取决于您的软件包列表的旧程度。

第二行将 OpenSSH 服务器安装到您的计算机上。此过程成功完成后,您应该已经在 Ubuntu 上启用了通过 SSH 进行安全远程访问的功能!

编辑 sshd_config 文件以允许远程访问

要在 Ubuntu 上启用 SSH,您需要编辑位于 /etc/ssh/sshd_config 的 sshd_config 文件。您可以打开终端并输入命令"sudo nano /etc/ssh/sshd_config"。打开 sshd_config 文件后,找到"PermitRootLogin prohibit-password"行,并将其更改为"PermitRootLogin yes"。

这将允许通过 SSH 进行 root 访问。如果您想允许其他用户通过 SSH 远程访问您的系统,请将其用户名添加到文件的"AllowUsers"部分。

重启 SSH 服务以使更改生效

编辑 sshd_config 文件后,务必重启 SSH 服务,以使此配置文件(或任何其他类似配置文件)中的任何更改生效。要在 Ubuntu 上重启 SSH 服务,请打开终端并输入以下命令之一 -

sudo systemctl restart ssh 

或

sudo service ssh restart

在"/etc/ssh/sshd_config"中进行任何必要的配置更改后,重新启动系统的 SSH 守护进程或服务,所有这些新设置将立即应用并尽快生效。

配置 SSH 访问的防火墙设置

防火墙作为一种安全机制,可以保护您的系统免受未经授权的网络流量的侵害。默认情况下,Ubuntu 附带一个名为 UFW(简易防火墙)的防火墙,它会阻止所有传入连接,除非其规则明确允许。

检查 Ubuntu 上的防火墙状态

在允许通过防火墙进行访问之前,务必确保防火墙确实正在运行且处于活动状态。以下命令可用于检查防火墙状态 -

sudo ufw status

如果 UFW 处于活动状态并正在运行,您将看到一条消息,表明它已启用并阻止所有传入连接(特定规则允许的连接除外)。

允许端口 22(SSH 的默认端口)上的传入流量

要启用端口 22 上的传入流量,我们需要在 UFW 配置文件中添加一条针对 SSH 的例外规则。可以使用以下命令 -

sudo ufw allow ssh

这将允许来自任何 IP 地址或网络的端口 22 上的传入流量。

如果您只想允许来自特定 IP 地址或网络的访问,您可以在规则中像这样指定它们 -

sudo ufw allow from to any port ssh

这仅允许来自指定 IP 地址或网络子网的 SSH 连接。添加这些规则后,建议您重启防火墙以确保更改生效 -

sudo ufw disable && sudo ufw enable

此命令会禁用 UFW,然后立即启用,以便应用新设置。

创建 SSH 密钥对以实现安全访问

使用 ssh-keygen 生成公钥-私钥对

在设置 SSH 访问之前,务必生成用于身份验证的安全密钥对。该密钥对包含一个私钥(将存储在您的计算机本地)和一个公钥(将上传到服务器)。

私钥应妥善保管,切勿与任何人共享。要生成密钥对,请在 Ubuntu 上打开终端并输入以下命令:

ssh-keygen

然后,系统将提示您输入私钥的密码。

这增加了一层额外的安全保护,因为除了正确的密码之外,还需要有人能够物理访问您的计算机才能访问。输入密码后(或者,如果您愿意,可以将其留空),按 Enter 键继续使用默认文件位置和名称。

将生成一对新的公钥-私钥对,并将其保存在您的主目录下的".ssh/"下。私钥将保存为"id_rsa",而公钥将保存为"id_rsa.pub"。

将公钥复制到服务器

生成 SSH 密钥后,您需要将公钥从本地计算机复制到 Ubuntu 服务器,以便它可以验证传入连接。为此,请使用 ssh-copy-id:

ssh-copy-id username@server_ip_address

将 `username` 替换为您在远程服务器上的用户名,将 `server_ip_address` 替换为其 IP 地址或主机名。

然后您将看到类似如下的输出 -

输出
/usr/bin/ssh-copy-id: INFO: 尝试使用用户"username"登录 /usr/bin/ssh-copy-id: INFO: 复制 ID 文件"/home/localuser/.ssh/id_rsa.pub"
到远程主机"192.0.2.142" /usr/bin/ssh-copy-id: INFO: 尝试使用用户:'用户名'
/usr/bin/ssh-copy-id:INFO:剩余 1 个密钥待安装——如果此时提示您安装新密钥,则表示您已安装新密钥
username@192.0.2.142 的密码:已添加密钥数量:1
现在尝试使用以下命令登录计算机:`ssh 'username@192.0.2.142'`,并检查以确保只添加了您需要的密钥。

出现提示时,输入您的远程用户帐户密码,然后按 Enter。您的公钥现在将被添加到远程服务器的 `authorized_keys` 文件中,这样您就可以使用 SSH 安全地连接,而无需每次都输入密码。

结论

按照本指南中概述的步骤操作后,您现在应该已在 Ubuntu 计算机上启用并配置了 SSH。通过 SSH 进行远程访问是一个强大的工具,可以显著提高工作效率并简化操作。然而,务必确保采取适当的安全措施,以防止未经授权的系统访问。


相关文章


有用资源