SSH (Secure Shell) 是一种标准的网络工具,用于以安全的方式远程访问 PC 和其他系统。在这里,我们将告诉您如何在 Ubuntu 上启用 SSH 并使用身份验证密钥使用它。
什么是SSH?
SSH 或 Secure Shell,既表示网络协议,也表示 使用所需 的 软件。它适用于22的专用端口号。因此,在系统防火墙中必须允许在 Ubuntu 或任何其他系统端口 22 上使用 SSH。
使用 SSH 背后的想法是与网络中的另一台计算机建立 安全连接。但是,远程计算机必须有一个正在运行的 SSH 服务器,否则我们将无法从本地计算机使用命令或 SSH 客户端连接它。
一旦我们建立了连接,就会提示输入远程 PC 用户的密码以登录并以完全加密的形式访问。连接的结果始终相同。您最终会进入计算机上的命令行,并以其中一位用户的身份登录。
此外,我们不需要PC来连接,甚至可以使用智能手机。SSH 还允许在没有显示器的情况下控制计算机,例如 NAS 盒、路由器等……
这个网络工具不仅限于 Ubuntu,我们可以在 macOS、Windows、Rasberry Pi 和其他甚至智能手机上使用它……
在 Ubuntu 20.04 上安装并启用 Open SSH 服务器
大多数情况下,Ubuntu 默认使用 SSH 作为 OpenSSH 服务器,并且客户端已经安装在其中。但是,如果您没有,请按照下面给出的步骤操作。本教程适用于所有活跃的 Ubuntu 系统,例如 Ubuntu 18.04/19.04/21.04,
- 运行系统更新命令-
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt-get update
- 在 Ubuntu 20.04 LTS 上安装 OpenSSH 服务器-
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt-get install openssh-server openssh-client
- 在 Ubuntu 上启用并启动 SSH服务器服务:
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo systemctl enable --now ssh
- 要检查状态运行 -
- linuxmi@linuxmi:~/www.linuxmi.com$ systemctl status ssh
如下图:
安装完成后,我们可以使用本地计算机(可以是虚拟机)通过 SSH 远程连接我们的 Ubuntu 20.04 LTS 系统进行测试。当然,您必须确保您的本地系统能够访问您要通过网络连接的远程系统。
如何通过SSH连接远程Ubuntu系统
让我们看看如何使用本地系统的命令提示符或终端通过 SSH 连接远程 Ubuntu 系统。
这里我们假设远程 Ubuntu 系统有一个 IP地址为 192.168.150.211并且用户名是linuxmi;现在通过 ssh 建立连接,请按照以下步骤操作:
- 在 Linux 中打开终端或在 Windows 系统中打开 命令提示符。
- 使用命令语法“ ssh username@ip-address”。例如 - ssh linuxmi@192.168.150.211。
- 由于我们在安装 SSH 服务器之前没有连接过我们的 Ubuntu 服务器,因此,当然,计算机并不“认识”彼此。
- 因此,当我们第一次连接服务器时,它会询问您是否真的要连接到计算机以及您是否信任显示的签名。只需输入“yes”进行确认。
- 之后,您的过程将询问远程用户的密码,该密码在连接服务器时在命令中定义。输入密码,您将获得远程服务器的命令行以远程发出命令。要再次离开,请输入“ exit ”。
如下图:
密钥认证以提高安全性
好吧,我们可以使用更安全的方式而不是输入远程 Ubuntu 服务器的密码,那就是Key。我们不需要输入普通密码,从而防止我们的密码被泄露或复制,以防我们使用一些未知的计算机连接远程服务器。
使用key的原理其实很简单。我们只需要根据公钥和私钥的概念在客户端机器上创建一个密钥对。所以,基本上,我们将创建两个密钥一个是公钥用来加密明文将其转换成密文,而私钥用于由接收器解密密文阅读的消息。
简而言之,私钥就像一把必须保密的门钥匙,因为您可以用它来解锁远程计算机的门。公钥基本上是您在服务器门上构建的钥匙孔。因此,这个概念类似于我们房子里的真实门,每个人都可以看到门的钥匙孔,但打开的钥匙只有房子的主人。
为 SSH 生成公钥和私钥
- 在本地系统上打开命令行 -终端或提示。
- 输入将生成密钥的SSH 密钥生成器命令ssh-keygen
- 按Enter键。
- (可选),然后你就可以输入 一个 在密码以便建立连接时添加额外的障碍。否则,如果您不希望系统要求额外的密码查询,只需按两次Enter键即可。
- 最终, 在您的用户目录下的隐藏目录“.ssh”中创建了两个文件: “id_rsa” 和 “id_rsa.pub”。文件名中的“rsa”代表所使用的密码学,但您不必担心。文件扩展名“ pub ”代表“公共”,因此它是公钥。而没有任何扩展名的文件是您的私钥。
将公钥复制到服务器
现在,要使用密钥对建立连接,请将您生成的公钥复制到此处的 Ubuntu 服务器。
我们不需要手动访问服务器,我们也可以使用 SSH 来复制密钥。
使用以下命令将 SSH 公钥复制到服务器:
在 Linux 上
- ssh-copy-id -i ~/.ssh/id_rsa.pub username@ip-address
注意:使用远程服务器的实际值更改用户名和 IP 地址。
在 Windows 上
- scp C:\Users\windwos-username\.ssh\id_rsa.pub username@ip-address:~/.ssh/authorized_keys
注意:将windows-username替换为您保存公钥的当前用户,而username@ip-address需要远程 Linux 用户和 IP 地址。
在 macOS 上:
- brew install ssh-copy-id
- ssh-copy-id -i ~/.ssh/id_rsa.pub username@ip-address
“ -i ”表示要复制身份,即指定的公钥。复制当然是通过 SSH 完成的,因此我们需要密码远程机器一次,这里。
复制密钥后,您可以使用您的私钥连接远程查看系统,而无需输入任何类型的密码。但是,请确保您的私钥位于只有您可以访问的安全位置。
要使用私有,这里是命令语法:
- ssh -i "path-to-private-key" username@ip-address
path-to-private-key:替换为您保存生成的私钥的路径。
而用户名和IP 地址用于远程服务器系统详细信息。
通过这种方式,我们可以使用身份验证密钥来获得无密码连接,请记住一件事,只有在您随身携带私钥文件时才有可能。可以在官网了解更多关于SSH 的信息。