使用RSA身份验证密钥在CentOS 6上进行无密码的SSH登录

时间:2020-01-09 10:42:57  来源:igfitidea点击:

说明

本教程将介绍如何在完整的Linux环境中配置无密码登录。它没有介绍如何在Windows计算机上生成密钥。

生成密钥

  • 在客户端计算机上,打开一个终端窗口。
  • 运行ssh-keygen命令。
ssh-keygen
  • 缺省密钥文件名是id_rsa和id_rsa.pub。如果要使用备用名称,则对于每个服务器的不同密钥对,可以指定要使用的文件名。
ssh-keygen -f custom-key-file-name

将私钥放在服务器上

生成密钥后,我们现在需要将私钥放置在将使用SSH远程登录的服务器上。有两种将密钥存储到服务器上的方法。第一种是通过使用另一个名为ssh-copy-id的命令,该命令使用SSH连接到远程服务器并将私钥文件保存到目标用户的本地目录中。另一种是将私钥保存到便携式设备上,然后将其复制到目标服务器上。

使用SSH-COPY-ID

  • 打开一个终端窗口。
  • 使用ssh-copy-id命令,同时指定帐户和目标服务器。
ssh-copy-id Hyman@localhost
  • 如果我们未使用默认密钥文件名,请使用'i'开关。
ssh-copy-id -i custom-key-file-name Hyman@localhost

文件复制

此方法实际上取决于我们如何将文件获取到目标服务器上。最安全的方法是使用便携式设备(例如USB拇指驱动器)并将其复制到服务器上。如果我们决定禁用SSH密码身份验证,就像我们将做得更深一些,这将是为其他用户添加其他私钥的唯一方法。

  • 将生成密钥对的用户的.ssh目录中的公共密钥文件复制到便携式设备上。在此示例中,我们将其复制到安装在/ media / usb1下的USB设备
cp /home/user1/.ssh/id_rsa.pub /media/usb1
  • 从客户端上拔下设备的电源。
  • 将设备插入目标服务器。
  • 将公共密钥文件复制到指定用户的主目录。
cp /media/usb1 /home/user1
  • 创建一个名为.ssh的新目录。
  • 将id_rsa.pub文件的内容复制到新.ssh目录中的一个名为authorized_keys的文件中。
cat id_rsa.pub > .ssh/authorized_keys
  • 确保.ssh目录和authorized_keys文件具有正确的SELinux上下文。
restorecon -R /home/user1/.ssh
  • 验证.ssh目录具有正确的SELinux上下文。
ls -laZ /home/user1 | grep .ssh

该目录应具有ssh_home_t上下文。

drwx------. user1 user1 unconfined_u:object_r:ssh_home_t:s0 .ssh
  • 验证authorized_keys文件具有正确的SELinux上下文。
ls -la /home/user1/.ssh | grep authorized_keys

该文件还应具有ssh_home_t上下文。

-rw-------. user1 user1 unconfined_u:object_r:ssh_home_t:s0 authorized_keys
  • 删除复制到服务器的密钥文件。
rm /home/user1/id_rsa.pub
  • 更改authorized_keys文件的权限,以允许我们进行写操作,但对该组和其他用户无权限。
chmod 600 /home/user1/.ssh/authorized_keys
  • 更改.ssh目录,以仅允许我们读取,写入和执行权限。
chmod 700 /home/user1/.ssh

测试连接

在客户端计算机上,打开一个终端窗口。现在,我们应该能够使用指定的帐户和服务器名称SSH到目标服务器,而无需提示输入密码。

禁用SSH密码认证

  • 在目标服务器上,将OpenSSH配置文件打开到文本编辑器(如VI或者Nano)中。
nano /etc/ssh/sshd_config
  • 找到以下几行:#RSAAuthentication yes`#PubkeyAuthentication yesPasswordAuthentication yes
  • 取消注释RSA和公钥身份验证行,然后禁用密码身份验证。 RSAAuthentication yes`PubkeyAuthentication yesPasswordAuthentication no
  • 保存更改并退出文本编辑器。
  • 重新加载SSHD配置文件。
service sshd reload