使用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