【RHCSA 问答题】第 10 章 配置和保护 SSH
目录
- ssh 如何实现用户的免密登录?
- SSH 的公钥和私钥有什么区别?它们分别存放在哪里?
- 如何设置禁止直接远程登录 root 账户?
- 如何设置禁止使用基于密码的身份验证来进行远程登录?
- 在修改 sshd 配置文件后,需要执行什么操作让修改生效?
ssh 如何实现用户的免密登录?
ssh使用基于私钥-公钥的身份验证。也就是在客户端使用ssh-keygen
命令创建用户的公钥
和私钥
,默认分别保存在~/.ssh/id_rsa.pub
和~/.ssh/id_rsa
文件中。公钥可以公开,私钥必须保密。
然后使用ssh-copy-id user@server-ip
命令将用户的公钥复制到服务器中,服务器会创建该用户的~/.ssh/authorized_keys
文件。
这样操作以后,在使用ssh user@server-ip
登录的时候,告诉服务器用户名,服务器从该用户的 ~/.ssh/authorized_keys文件中找到对应的公钥,用它加密一段随机挑战码发给客户端。 客户端用本地私钥
解密这段挑战码,并把结果返回服务器。服务器验证结果正确后,确认客户端拥有私钥,允许登录,从而实现免密认证。
通过这种方式,用户无需每次输入密码,既提高了效率,又增强了系统的安全性。
SSH 的公钥和私钥有什么区别?它们分别存放在哪里?
公钥是公开的,通常被放置在目标服务器
上,用于身份验证
。别人可以用这个公钥加密信息
或验证你发送的签名
,但无法反推出你的身份或解密数据。
私钥必须保密,保存在客户端本地,用来解密通过公钥加密的信息
或对数据进行签名
。拥有私钥的人就拥有了登录对应服务器的权限,因此必须妥善保护,不能泄露。
公钥和私钥通常存放在本地用户主目录下的 ~/.ssh/ 目录中,
私钥存放在~/.ssh/id_rsa
,公钥存放在~/.ssh/id_rsa.pub
。
如何设置禁止直接远程登录 root 账户?
将sshd守护进程的主配置文件/etc/ssh/sshd_config
里面的 PermitRootLogin yes
修改为 PermitRootLogin no
。
然后重启SSH服务使修改生效:systemctl restart sshd
如何设置禁止使用基于密码的身份验证来进行远程登录?
将sshd守护进程的主配置文件/etc/ssh/sshd_config
里面的 PasswordAuthentication
参数设置为no
。
然后重启 SSH 服务使修改生效:systemctl restart sshd
在修改 sshd 配置文件后,需要执行什么操作让修改生效?
重新加载服务或重启服务。systemctl reload sshd
或systemctl restart sshd
。