公钥认证允许您通过 SSH 访问服务器而无需密码。 这是将公共 ssh 密钥复制到服务器的两种方法。
我相信您了解基本的 SSH 概念。 您的 Linux 服务器已启用 ssh。 您已经在个人计算机上生成了 ssh 密钥。 现在您想将您的公钥上传到服务器的授权密钥,这样您就可以访问它,而无需一直输入您的帐户密码。
本快速教程向您展示了向服务器添加公共 SSH 密钥的两种方法。
要求
在你看到之前,让我们先弄清楚你应该已经拥有什么:
- 您的目标服务器应该启用 ssh
- 您应该已经生成了公钥和私钥(只需使用命令 ssh-keygen -t rsa)
- 您应该在服务器上有一个用户帐户和密码。 即使是root帐户也可以。
- 你应该知道服务器的IP地址
既然你已经确定了以上四个要求,那么我们来看看如何使用公钥认证。
身份验证是按用户群进行的,因此公钥进入目标用户的家中。
方法一:自动复制ssh密钥到服务器
第一种方法是最终用户将其个人计算机的公钥复制到远程服务器上的授权密钥列表中。
在这里,我假设您能够使用 ssh 登录到远程服务器 [email protected]_of_server。 它会询问您的帐户密码,然后您进入服务器。
如果您将您的公钥添加到服务器,您应该能够在不输入密码的情况下一直登录。
OpenSSH 提供了一个名为 ssh-copy-id 的便捷工具调用,用于将 ssh 公钥复制到远程系统。 它甚至创建所需的目录和文件。
正如我之前提到的,您应该知道要通过公钥身份验证访问的服务器的用户名和密码。
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]_ADDRESS_OF_THE_SERVER
出现提示时,输入您在远程服务器上的用户帐户的密码。 您的公钥应自动复制到远程服务器上的相应文件夹中。
我使用了 ~/.ssh/id_rsa.pub 因为这是公共 ssh 密钥的默认位置。 如果你在其他位置有它,你应该在上面的命令中使用它。
方法二:手动复制ssh公钥到服务器
第一种方法在用户端进行操作。 假设您是系统管理员并且您的服务器不允许通过密码进行 SSH 登录。 访问服务器的唯一方法是使用 SSH 公钥身份验证。
在这种情况下,您可以要求最终用户提供她/他的公钥。 现在你可以做的是创建 .ssh/authorized_keys 目录,然后在这里复制公钥。
让我展示一下步骤。
第一步:获取公钥
通过键入以下命令要求最终用户提供公钥:
cat ~/.ssh/id_rsa.pub
它将显示一个以 ssh-rsa 开头的长随机字符串:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP [email protected]
您可以通过电子邮件或消息传递工具获取此文本。 通常,这应该不是问题。
第 2 步:在用户的主目录中创建 ssh 目录(作为系统管理员)
请记住,您必须在最终用户的主目录中创建这些新目录和文件,而不是您自己的 (root/sysadmin)。
mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keys
现在使用像 Vim 这样的文本编辑器打开这个 /home/user_name/.ssh/authorized_keys 文件,并在此处添加用户的公钥:
vim /home/user_name/.ssh/authorized_keys
Save 和 close 文件。 它几乎准备好了。
步骤 3:为文件设置适当的权限
对 ssh 文件拥有适当的文件权限非常重要,否则您会看到诸如 Permission denied (publickey) 之类的错误。
首先,确保设置正确的文件权限:
chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keys
您使用 root 或您自己的文件创建了这些文件 admin 其他用户的帐户。 您需要将所有权更改为用户:
chown -R username:username /home/username/.ssh
现在已经完成,您可以要求最终用户登录到服务器。
如果您遇到任何问题或对此主题有任何建议,请告诉我。