如何在Ubuntu上配置SSH的authorized_keys
SSH 或 Secure Shell 旨在访问远程主机的内容以远程执行不同类型的任务。默认情况下,Ubuntu 上未安装 SSH。安装后,SSH 可以提供对远程系统的受密码保护的加密访问。 SSH 服务器在远程主机上运行,SSH 客户端在将建立远程连接的系统上运行。 authorized_keys 文件是 SSH 连接中最重要的部分。它指定用于验证允许使用公钥身份验证登录远程主机的用户的密钥。本教程中已解释了如何使用此文件进行 SSH 连接。
先决条件
Ubuntu 默认情况下没有安装 SSH 服务器。在开始本教程之前,您必须安装将用作 SSH 服务器的 OpenSSH 软件包。如果系统中尚未安装OpenSSH服务器,请运行以下命令安装OpenSSH服务器。
生成 SSH 密钥
生成 SSH 密钥对以在远程服务器中执行命令。运行以下命令创建公钥和私钥。私钥将存储在远程服务器中,公钥将安全地存储在客户端中。
执行上述命令后,它会询问密钥存储的文件名。按Enter键保留公钥的默认文件名id_rsa.pub。接下来,它会要求输入密码才能登录。如果您想保留空密码,请再次按两次Enter键。生成密钥后将出现以下类似的输出。
创建authorized_keys文件
id_rsa.pub 文件包含存储在远程主机 ~/.ssh/ 文件夹中的 SSH 连接的公钥。客户端计算机还需要公钥才能与本教程下一部分中复制的远程主机连接。您必须在包含公钥的远程主机的 ~/.ssh 文件夹中创建名为authorized_keys 的文件。运行以下命令将 id_rsa.pub 文件移动到 ~/.ssh/authorized_keys 文件。
如果文件移动正确,就不会出现错误,如下图所示。
修改配置文件
您必须在服务器计算机中设置一些配置参数才能在没有任何密码的情况下进行 SSH 连接。运行以下命令,使用 nano 编辑器打开 sshd_config 文件以设置必要的参数值。
将 PasswordAuthentication 的值设置为 no 以禁用 SSH 连接的文本密码选项。
密码验证 否
保存并关闭文件。执行以下命令,重启SSH服务。
运行以下命令设置authorized_keys文件的权限位,以防止未经授权的访问该文件。
复制客户端机器中的公钥
现在,登录到客户端计算机,您将在其中执行 ssh 命令以与远程主机建立 SSH 连接。这里使用了两个 Ubuntu 用户帐户来检查本地服务器中的 SSH 连接。在本教程中,一个用户帐户已用作客户端,另一个用户帐户已用作服务器。
运行以下命令在客户端计算机中创建名为 ~/.ssh 的文件夹(如果不存在)。
执行以下命令,将远程主机上的公钥复制到客户端的~/.ssh文件夹中。
您必须提供远程主机用户名的密码,才能将公钥复制到客户端计算机。如果文件复制正确,您将得到以下输出。客户端计算机现在已准备好使用 ssh 服务与服务器计算机建立连接。
使用 SSH 无密码登录服务器计算机
现在,公钥同时存在于客户端和服务器计算机中。当客户端机器使用 ssh 命令向服务器机器发送连接请求时,服务器会将客户端的公钥与服务器的公钥进行匹配。如果找到匹配项,则将建立从客户端到服务器的连接。您可以使用主机名或 IP 地址连接到服务器或远程主机。本地服务器使用本教程展示了如何使用authorized_keys建立从客户端计算机到服务器计算机的SSH连接。一个帐户已用作安装 OpenSSH 服务器的服务器计算机,另一个帐户已用作此处的客户端计算机。从客户端计算机运行以下命令以建立与服务器计算机的连接。
执行上述命令后将出现以下输出。输出显示客户端计算机的用户名是“yesmin”。服务器计算机的用户名是“fahmida”。SSH 连接已正确建立,因为用户名已从“yesmin”更改为“fahmida”。现在,可以轻松访问服务器计算机的内容。如果用户现在执行任何命令,输出将根据服务器机器生成。
结论
本教程已通过使用 localhost 解释了如何使用授权密钥建立 SSH 连接。您可以按照相同的过程为远程主机建立 SSH 连接。您还可以使用 ssh-copy-id 命令与另一个教程中所示的服务器建立 SSH 连接。