如何在 Ubuntu 上使用 ssh-copy-id
SSH 的有用工具之一是ssh-copy-id,它用于在远程服务器上安装 SSH 密钥来登录服务器,而无需提供登录密码。因此,使用该工具可以轻松实现使用 SSH 的单点登录和自动无密码登录。如果需要,它会通过创建文件和目录将公钥复制到远程主机的 ~/.ssh/authorized_keys 文件,但不会修改任何现有文件或文件夹的权限。本教程已解释如何使用 ssh-copy-id 命令进行 SSH 连接。
先决条件:
在开始本教程的步骤之前,需要完成以下步骤。
如果之前没有启用Ubuntu上的SSH服务,请启用它。生成SSH密钥对以在远程服务器中执行命令。运行以下命令创建公钥和私钥。私钥将存储在远程服务器中,公钥将安全地存储在客户端中。
运行以下命令,使用nano编辑器打开sshd_config文件,添加一些必要的配置。
在文件中添加以下行以启用 root 登录和基于密码的身份验证。
PermitRootLogin yes
执行以下命令,重启SSH服务。
句法 :
ssh-copy-id 命令的语法如下。它支持多种选项,稍后将对此进行解释。
ssh-copy-id 命令的不同选项:
本教程的这一部分描述了使用 ssh-copy-id 命令的不同选项的目的。
- -i keyfile
它用于复制存储在文件中的公钥。它可以多次使用。
- -l
它用于复制 ssh-agent 当前持有的密钥。如果未指定 -i 选项,它将用作默认值。
- -o ssh-option
它用于将选项直接传递给 ssh。它可以多次使用。
- -p port
它用于连接远程主机上的指定端口,而不是默认端口 22。
- -v
它用于将 -v 的值传递给 ssh。
将密钥复制到服务器:
您必须在服务器计算机中授权公钥才能建立 SSH 连接,而无需使用任何密码。创建公钥后,ssh-copy-id 命令可以将该密钥添加为服务器计算机上的授权密钥。
从服务器计算机运行以下命令,将任何新创建的公钥添加为服务器的授权密钥。
如果远程服务器中已存在公钥,则会出现以下输出;否则,将添加密钥。
之前提到过 -i 选项与 ssh-copy-id 命令一起使用来添加文件中的公钥。如果您将新创建的公钥存储在默认文件中,则文件名将为id_rsa.pub。但是您在创建密钥对时设置了任何文件名,然后使用该文件名和 -i 选项。我已将公钥存储在默认文件中。
从服务器计算机运行以下命令将公钥添加到服务器计算机。该命令会将密钥复制到服务器并将其配置为将密钥添加到 authorized_keys 文件中以访问服务器。
如果之前没有将公钥添加到服务器计算机中,则会出现以下输出。
检查连接:
将密钥添加到服务器后,您必须检查客户端计算机是否可以与服务器连接。服务器计算机的用户名是“fahmida”,客户端计算机的用户名是“yesmin”。因此,首先登录客户端机器来测试连接。
运行以下命令将服务器的身份添加到客户端计算机。
运行以下不带任何选项的 ssh 命令来建立与服务器计算机的连接。如果服务器计算机中启用了基于密码的身份验证,则用户必须提供有效密码才能与服务器建立连接。
以下输出显示服务器的身份已添加到客户端计算机。接下来,服务器用户的密码已要求连接,因为此处的服务器计算机已启用基于密码的身份验证。用户名从命令提示符中的“yesmin”更改为“fahmida”,表示输入有效密码后连接已正确建立。
如果您想提及公钥的文件名以及与服务器建立连接的位置,请使用 -i 选项运行以下 ssh 命令。如果您将公钥存储在用户定义的文件名中,则需要这样做。我在生成密钥时使用了默认文件名 id_rsa.txt。
它会像以前一样要求输入密码来建立与服务器的连接。输出显示连接已正确建立,并且命令提示符的用户名已更改。如果您不想在每次连接服务器时提供密码,可以更改服务器的配置文件以禁用基于密码的身份验证。
结论:
本教程通过使用本地主机的两个用户帐户来描述如何使用 ssh-copy-id 命令连接远程主机,以帮助读者正确了解该命令的功能。