如何将SSH公钥添加到服务器

时间:2020-03-05 15:25:53  来源:igfitidea点击:

公钥身份验证允许我们通过无密码的SSH访问服务器。
以下是将公共SSH密钥复制到服务器的两种方法。

方法1:自动将SSH密钥复制到服务器

第一种方法是最终用户将其个人计算机的公钥复制到远程服务器上的授权密钥的列表中。

其中我假设我们可以使用ssh Hyman @ theitroad_of_server登录远程服务器。

它要求帐户密码,并输入服务器。

如果将公钥添加到服务器,则应能够在不键入密码的情况下登录。

OpenSSH提供了一个名为SSH-Copy-ID的方便工具调用,用于将SSH公钥复制到远程系统。
它甚至会创建所需目录和文件。

正如我之前提到的那样,我们应该知道要通过公钥验证要访问的服务器的用户名和密码。

ssh-copy-id -i ~/.ssh/id_rsa.pub Hyman@theitroad_ADDRESS_OF_THE_SERVER

出现提示时,在远程服务器上输入用户帐户的密码。
公钥应自动在远程服务器上的相应文件夹中复制。

我使用了~/.ssh/id_rsa.pub,因为这是公共SSH键的默认位置。
如果我们在其他一些位置有它,则应在上面的命令中使用该。

方法2:手动将公共SSH密钥手动复制到服务器

第一种方法对用户侧有动作。
假设我们是Sysadmin,服务器不允许通过密码进行SSH登录。
访问服务器的唯一方法是使用SSH公钥身份验证。

在这种情况下,我们可以要求最终用户提供她/他的公钥。
现在我们可以做的是创建.ssh/authorized_keys目录,然后在此处复制公钥。

让我展示这些步骤。

第1步:获取公钥

询问最终用户通过键入以下命令来提供公钥:

cat ~/.ssh/id_rsa.pub

它将显示与SSH-RSA开始的长随机字符串:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP Hyman@theitroad

我们可以通过电子邮件或者消息工具获取此文本。
通常,它不应该是一个问题。

第2步:在用户的主目录中创建SSH目录(作为sysadmin)

请记住,我们必须在最终用户的主目录中创建这些新目录和文件,而不是我们自己的(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

保存并关闭文件。
这几乎准备好了。

第3步:将适当的权限设置为文件

在SSH文件中具有适当的文件权限非常重要,否则我们将看到像拒绝权限(PublicKey)这样的错误。

首先,确保设置正确的文件权限:

chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keys

我们为其他用户创建了具有根或者我们自己的管理员帐户的文件。
我们需要将所有权更改为用户:

chown -R username:username /home/username/.ssh

现在它完成了,我们可以要求最终用户登录服务器。