Linux SSH免密登录实验:基于Xshell的公钥认证机制
一、实验目的
掌握通过Xshell图形化工具配置SSH密钥认证的方法,实现Windows客户端对Linux服务器的免密码安全登录,理解公钥加密在远程连接中的应用原理。
二、实验原理
SSH密钥认证基于非对称加密技术,通过生成一对密钥(公钥和私钥)实现身份验证:
- 公钥:部署在Linux服务器的~/.ssh/authorized_keys文件中,用于加密挑战信息。
- 私钥:保存在Windows客户端,用于解密服务器发送的挑战,证明身份合法性。
登录时,服务器用公钥加密随机数据,客户端用私钥解密后返回,验证通过则无需输入密码。
三、实验步骤
3.1 搭建及准备实验环境
3.11 搭建实验环境
此实验以Open Euler为例,具体虚拟机配置过程(RHEL与Open Euler类似)可参考过往文章:https://blog.csdn.net/2502_90206768/article/details/159048098?spm=1011.2124.3001.6209
搭建完成后切记要进行以下操作:
1、修改主机名
2、关闭防火墙
3、关闭SE Linux
#关闭防火墙 [root@localhost ~]# systemctl disable --now firewalld Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service". Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service". #SELinux——关闭 [root@localhost ~]# vim /etc/selinux/config SELINUX=disabled #查看防火墙状态 [root@localhost ~]# systemctl status firewalld #修改主机名字 [root@localhost ~]# hostnamectl set-hostname nanwang [root@localhost ~]# bash3.12 准备实验环境
检查/root/.ssh/authorized_keys是否存在。若不存在,需手动创建目录和文件
[root@kai ~]# cd /root [root@kai ~]# ls -a . .. anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc .lesshst .tcshrc .viminfo [root@kai ~]# mkdir /root/.ssh [root@kai ~]# touch /root/.ssh/authorized_keys3.2 生成密钥对(Windows客户端)
- 打开Xshell,点击菜单栏工具→用户密钥管理者。
- 点击生成,选择密钥类型(推荐RSA,长度2048位),设置密钥名称(如my_ssh_key),无需设置密码(若需更高安全可设置密码短语)。
- 生成完成后,在密钥管理器中选中该密钥,点击属性,复制公钥内容(以ssh-rsa开头的字符串)。
[root@kai ~]# vim /root/.ssh/authorized_keys #将拷贝的公钥粘贴 [root@kai ~]# systemctl restart sshd #重启服务3.3 配置Xshell会话使用密钥登录
- 在Xshell中打开目标会话的属性(或新建会话)。
- 进入连接→用户身份验证,设置:
方法:选择Public Key。
用户名:输入Linux服务器的登录用户名(如root或普通用户)。
用户密钥:选择之前生成的密钥(如my_ssh_key)。 - 点击确定保存配置,重新连接会话。
四、实验结果
- 成功通过Xshell使用密钥对登录Linux服务器,无需输入用户密码。
- 检查服务器端
~/.ssh/authorized_keys文件,确认公钥已正确添加。 - 客户端Xshell会话属性中,用户身份验证方法显示为
Public Key,且密钥名称匹配。
七、实验总结
通过本次实验,掌握了SSH密钥认证的核心流程:本地生成密钥对→公钥部署到服务器→客户端配置私钥验证。相比密码登录,密钥认证具有以下优势:
- 安全性更高:避免密码被暴力破解或嗅探。
- 自动化友好:适合脚本批量管理服务器,无需人工输入密码。
- 便捷性:一次配置后,后续登录无需记忆复杂密码。
注:实验中需注意权限设置的严格性(如.ssh目录和authorized_keys文件的权限),否则可能导致认证失败。此外,私钥文件需妥善保管,避免泄露导致安全风险。
