Xshell 常见问题与解决方案

涵盖SSH连接、密钥认证、中文显示、文件传输、代理配置、许可证激活等高频问题,提供逐步排查方法。

SSH连接问题排查

连接超时通常由网络不可达或端口未开放引起。按以下步骤排查:

  1. 在本地终端执行 ping 目标IP 确认网络连通性。若丢包率100%,检查本地防火墙或VPN状态。
  2. 使用 telnet 目标IP 22 测试SSH端口(默认22)是否开放。若连接被拒绝,确认服务器端sshd服务是否运行:systemctl status sshd
  3. 在Xshell会话属性中,将"连接 → 常规"中的超时时间从默认的20秒调整为60秒(路径:文件 → 属性 → 连接)。
  4. 若服务器使用非标准端口(如2222),确认Xshell中端口号填写正确。
如果使用云服务器,需在安全组规则中放行对应SSH端口的入站流量。

频繁断连多与Keep-Alive设置或网络中间设备有关:

  1. 在Xshell中开启心跳包:文件 → 属性 → 连接 → Keep Alive,勾选"发送协议保活包",间隔设为30秒。
  2. 同时在服务器端编辑 /etc/ssh/sshd_config,添加或修改:ClientAliveInterval 60ClientAliveCountMax 3,然后重启sshd。
  3. 若通过NAT网关或负载均衡器连接,检查其空闲超时设置(通常默认300-900秒)。

该错误表示服务器主机密钥与Xshell本地缓存不匹配,常见于服务器重装系统或IP地址变更后。

  1. 在Xshell中打开 工具 → 主机密钥管理器,找到对应IP的记录并删除。
  2. 重新连接时,Xshell会弹出新的主机密钥确认对话框,核对指纹后点击"接受并保存"。
  3. 若确认服务器未被替换,可安全接受新密钥。若有安全顾虑,应通过其他渠道向服务器管理员确认密钥指纹。

密钥认证与登录失败

服务器拒绝密钥通常由权限或配置问题导致,逐项检查:

  1. 确认服务器端 ~/.ssh/authorized_keys 文件包含正确的公钥内容,且每个密钥占一行。
  2. 检查权限:chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys。OpenSSH对权限要求严格,权限过大会直接拒绝。
  3. 确认 /etc/ssh/sshd_configPubkeyAuthentication yes 已启用,且 AuthorizedKeysFile 路径正确。
  4. 在Xshell中确认选择了正确的私钥文件:会话属性 → 连接 → 用户身份验证 → 方法选择"Public Key",浏览选择对应的 .pem 或 .ppk 文件。
Xshell支持RSA(2048/4096位)、ED25519、ECDSA等密钥类型。推荐使用ED25519,安全性高且密钥体积小。可通过 工具 → 新建用户密钥生成向导 创建。

密码正确但被拒绝,可能原因:

  • 服务器禁用了密码认证:检查 /etc/ssh/sshd_configPasswordAuthentication 是否为 yes
  • 用户被限制登录:检查 AllowUsersAllowGroups 配置是否包含当前用户。
  • PAM模块限制:查看 /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(CentOS/RHEL)获取详细拒绝原因。
  • root用户默认禁止密码登录:PermitRootLogin 可能设为 prohibit-password,需改为 yes 或使用密钥登录。

中文显示与编码设置

中文乱码需要同时确保Xshell客户端和服务器端编码一致:

  1. 在Xshell中设置编码:文件 → 属性 → 终端 → 编码,选择 UTF-8
  2. 确认服务器locale设置:执行 locale 命令,输出应包含 LANG=en_US.UTF-8LANG=zh_CN.