如何在 Ubuntu 上启用 SSH?
介绍
Secure 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,请安装它
如果您确定 OpenSSH 服务器在您的 Ubuntu 计算机上尚不可用,您可以在终端中使用一些简单的命令来安装它 -
sudo apt-get update
sudo apt-get install openssh-server
第一个命令将确保系统的所有存储库都是最新的;此步骤可能需要几分钟时间,具体取决于您的包裹列表的新旧程度。
第二行将 OpenSSH Server 安装到您的计算机上。一旦此过程成功完成,您应该已经在 Ubuntu 上通过 SSH 启用了安全远程访问!
编辑 sshd_config 文件以允许远程访问
为了在 Ubuntu 上启用 SSH,您需要编辑位于 /etc/ssh/sshd_config 的 sshd_config 文件。这可以通过打开终端并输入命令“sudo nano /etc/ssh/sshd_config”来完成。打开 sshd_config 后,找到显示“PermitRootLogin Prevent-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 地址或主机名。
然后您将看到类似于此的输出 -
Output
/usr/bin/ssh-copy-id: INFO: attempting to log in with user: 'username' /usr/bin/ssh-copy-id: INFO: copying ID file '/home/localuser/.ssh/id_rsa.pub'
to remote host '192.0.2.142' /usr/bin/ssh-copy-id: INFO: attempting to log in with user: 'username'
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
username@192.0.2.142's password: Number of key(s) added: 1
Now try logging into the machine, with:`ssh 'username@192.0.2.142'` and check to make sure that only the key(s) you wanted were added.
出现提示时输入远程用户帐户密码,然后按 Enter。您的公钥现在将被添加到远程服务器的“authorized_keys”文件中,允许您使用 SSH 安全连接,而无需每次都需要密码。
结论
按照本指南中概述的步骤进行操作后,您现在应该在 Ubuntu 计算机上启用并配置了 SSH。通过 SSH 进行远程访问是一个强大的工具,可以极大地提高工作效率和易用性。但是,重要的是要确保采取适当的安全措施以防止未经授权的访问您的系统。