hello大家好😁
前言❓
今天的小练习里面有个题是这样要求的:
- 配置用户,让本地系统serverb上的student用户能在不输入密码的情况下,使用SSH来登录远程系统servera
- 在serverb(本地系统)上配置sshd服务,以禁止用户通过SSH以root身份登录
- 在serverb(本地系统)上配置sshd服务,以禁止用户使用其密码进行登录
分析❗
SSH协议使系统能够通过不安全的网络以加密和安全的方式进行通信。一般使用ssh命令登录远程服务器时,远程系统会提示我们使用该用户的密码进行身份验证
但是,当我们想在不使用密码的情况下安全地登录远程系统该怎么办?❔
SSH为我们提供了一种可以基于密钥的身份验证方法,这种身份验证基于私钥-公钥方案
基于SSH密钥的身份验证
在使用这种身份验证之前,我们需要先生成加密密钥文件的一个匹配对。一个是私钥,另一个是匹配的公钥。私钥文件用作身份验证凭据,像密码一样,必须妥善保管。然后将公钥复制到用户希望连接到的系统,用于验证私钥,公钥不需要保密。
OK,接下来我们一步一步来💨
为serverb(当前系统)上的student用户生成SSH密钥
使用ssh-keygen命令,为student用户生成SSH密钥。私钥和公钥一般默认分别保存在当前用户主目录下的.ssh/key_rsa和.ssh/key_rsa.pub中。但是我们最好将自己生成的私钥公钥对放在另外的文件下,注意公钥文件以.pub结尾
在下面我将私钥和公钥分别放在 /home/student/.ssh/review3_key和/home/student/.ssh/review3_key.pub中
让远程系统(servera)接受利用我为serverb上student用户创建的SSH密钥对进行登录身份验证
使用ssh-copy-id命令,将公钥文件导出。
-i 选项用于指定文件
使用ssh命令,确认我们现在可以从serverb以student身份并使用SSH私钥 /home/student/.ssh/review3_key 登录servera,而且不会提示我们输入密码
我们要指定我们自己设置的私钥文件,否则默认使用/home/student/.ssh/key_rsa里的私钥进行验证
在serverb上配置sshd服务,以禁止用户通过SSH以root身份登录
在 /etc/ssh/sshd_config配置文件中修改PermitRootLogin参数为no
注意,在修改完配置文件后要重新加载服务
然后我们就发现不能用SSH 以root用户身份登录了
在serverb上配置sshd服务,以禁止用户使用其密码进行登录
/etc/ssh/sshd_config配置文件中有一个参数是PasswordAuthentication,默认值是yes,意味着我们不仅可以通过私钥进行登录身份验证,还可以通过输入密码进行登录(如下面👇第一张图所示)。将值改为no,我们就只能通过私钥进行登录了
注意,在修改完配置文件后要重新加载服务
然后再尝试使用密码登录,就不行了
总结💯
以后,我们就能够将用户账户配置为使用基于密钥的身份验证来安全地登录远程系统,并且无需输入密码。
其实私钥也是可以被保护起来的,在上面,我们使用ssh-keygen时,系统提示我们指定密语,我们是直接跳过了,私钥在不受密语保护的情况下,任何拥有我的私钥文件的人都可以使用它进行身份验证。如果设置了密语,那么在使用私钥进行身份验证的时候需要输入密语。这些内容大家感兴趣的话可以自己去浏览相关资料👀
感谢💖
好啦,这次的分享就到这里,感谢大家看到这里💕,我目前还是学习中小白,十分希望能和各位朋友们大佬们在讨论区互动💫再次感谢💞