Xshell连接Linux服务器可实现免密登录:一、保存会话凭证自动输入账号密码;二、配置SSH公钥认证,生成密钥对并部署公钥至服务器authorized_keys;三、用ssh-copy-id自动化上传公钥;四、禁用密码登录提升安全性;五、排查权限及SELinux问题。

如果您在使用Xshell连接Linux服务器时,每次都需要手动输入用户名和密码,则可通过会话凭证保存或SSH公钥认证两种机制实现免重复输入。以下是具体操作步骤:
一、保存会话用户名与密码实现自动登录
该方法通过Xshell内置的“登录脚本”功能,在建立连接时自动发送预设的用户名和密码,适用于对安全性要求不极端、且允许明文凭证缓存的内部环境。注意:此方式密码以可恢复形式存储于本地配置中,需确保Xshell安装目录及会话文件受权限保护。
1、打开Xshell,点击菜单栏【文件】→【新建】,创建新会话。
2、在【新建会话属性】窗口中填写主机IP地址、端口号(默认22),命名会话后点击【确定】。
3、双击该会话发起首次连接,输入用户名后勾选【记住用户名】,点击【确定】。
4、在弹出的身份验证窗口中输入密码,并勾选【记住密码】,点击【确定】。
5、右键该会话,选择【属性】→【连接】→【用户身份验证】,确认【方法】为【Password】,且【用户名】字段已填充。
6、再次双击该会话,即可跳过手动输入环节直接完成登录。
二、配置SSH公钥认证实现真正免密登录
该方法基于非对称加密原理,将本地生成的私钥导入Xshell,对应公钥部署至服务器的~/.ssh/authorized_keys文件中。登录时由服务端发起挑战,客户端用私钥签名响应,全程无需传输密码,安全性显著高于密码保存方式。
1、打开Xshell,点击菜单栏【工具】→【新建用户密钥生成向导】。
2、密钥类型选择【RSA】,密钥长度设为【2048】或【4096】,点击【下一步】开始生成。
3、移动鼠标以增强随机性,待进度条完成,点击【下一步】。
4、设置密钥名称(如prod-server-key),可选填写密钥密码(留空则完全免交互),点击【完成】。
5、在密钥列表中选中刚生成的密钥,点击【公钥】选项卡,全选并复制公钥内容(以ssh-rsa AAAA...开头的整段文本)。
6、通过已有密码登录目标服务器,执行:mkdir -p ~/.ssh && chmod 700 ~/.ssh。
7、执行:echo "粘贴的公钥内容" >> ~/.ssh/authorized_keys,随后运行:chmod 600 ~/.ssh/authorized_keys。
8、返回Xshell,右键该会话→【属性】→【连接】→【用户身份验证】,将【方法】改为【Public Key】。
9、点击【浏览】按钮,定位并导入刚才生成的私钥文件(无.pub后缀,扩展名通常为.ppk或.key)。
10、点击【确定】保存设置,重新连接该会话,即可无需输入任何密码完成登录。
三、使用ssh-copy-id命令自动化部署公钥(Linux/macOS客户端适用)
若您的Xshell运行在WSL或您同时拥有Linux终端环境,可借助OpenSSH原生命令ssh-copy-id一键完成公钥上传与权限配置,避免手动编辑文件可能引发的格式错误或权限遗漏问题。
1、在Linux子系统或macOS终端中,确认已生成密钥对:ls -l ~/.ssh/id_rsa.pub。
2、执行命令:ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip,其中username为远程用户名,server_ip为服务器地址。
3、按提示输入远程用户密码一次,命令将自动创建.ssh目录、写入authorized_keys、并设置正确权限(700/600)。
4、回到Xshell,按第二部分第8–9步配置会话使用该私钥,即可启用公钥登录。
四、验证并强制禁用密码登录提升安全性
为防止密码认证通道被利用,可在确认公钥登录稳定可用后,修改服务器SSH守护进程配置,彻底关闭密码验证。此操作需确保至少一个公钥登录方式已100%生效,否则可能导致永久失联。
1、以root或sudo权限编辑SSH配置文件:sudo vi /etc/ssh/sshd_config。
2、定位并修改以下三行,确保其未被注释且值正确:
PubkeyAuthentication yes
PasswordAuthentication no
AuthorizedKeysFile .ssh/authorized_keys
3、保存退出后重启SSH服务:sudo systemctl restart sshd(CentOS/RHEL系为sshd,Ubuntu/Debian系同理)。
4、新开终端窗口,尝试用其他客户端或Xshell原始密码方式连接,应返回Permission denied (publickey),表明密码通道已关闭。
五、处理常见权限与SELinux异常
公钥登录失败常源于服务器端文件权限过宽或SELinux策略拦截。.ssh目录权限必须为700,authorized_keys文件权限必须为600;若服务器启用了SELinux,即使权限正确仍可能拒绝认证,此时需修复上下文。
1、检查权限:ls -ld ~/.ssh 和 ls -l ~/.ssh/authorized_keys,不符则立即修正:chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys。
2、检查SELinux状态:sestatus,若为enabled,执行:restorecon -Rv ~/.ssh。
3、确认~/.ssh所属用户与登录用户一致,执行:chown -R $USER:$USER ~/.ssh。
4、查看SSH日志定位问题:sudo tail -f /var/log/secure | grep 'sshd.*error\|failure'。