如何在Ubuntu上启用SSH?
介绍
安全外壳协议 (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 客户端的版本。如果您看到类似“command not found”(命令未找到)或“package could not be found”(找不到软件包)的消息,则表示您的 Ubuntu 系统上当前未安装 SSH。
如果尚未安装,则安装SSH
如果您确定您的 Ubuntu 机器上尚不可用 OpenSSH 服务器,则可以使用终端中的几个简单命令来安装它:
sudo apt-get update sudo apt-get install openssh-server
第一个命令将确保您的所有系统存储库都是最新的;此步骤可能需要几分钟,具体取决于您的软件包列表有多旧。
第二行将 OpenSSH 服务器安装到您的机器上。此过程成功完成后,您应该已通过 SSH 在 Ubuntu 上启用了安全的远程访问!
编辑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(Uncomplicated Firewall)的防火墙,它阻止所有传入连接,除非其规则明确允许。
检查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 [email protected]'s password: Number of key(s) added: 1 Now try logging into the machine, with:`ssh '[email protected]'` and check to make sure that only the key(s) you wanted were added.
出现提示时输入远程用户帐户密码并按 Enter 键。您的公钥现在将添加到远程服务器的 `authorized_keys` 文件中,允许您安全地使用 SSH 连接,而无需每次都输入密码。
结论
按照本指南中概述的步骤操作后,您现在应该已在 Ubuntu 机器上启用并配置了 SSH。通过 SSH 进行远程访问是一个强大的工具,可以极大地提高生产力和易用性。但是,务必确保已实施适当的安全措施,以防止未经授权访问您的系统。