Xshell 常见问题与解决方案
涵盖SSH连接、密钥认证、中文显示、文件传输、代理配置、许可证激活等高频问题,提供逐步排查方法。
SSH连接问题排查
连接超时通常由网络不可达或端口未开放引起。按以下步骤排查:
- 在本地终端执行
ping 目标IP确认网络连通性。若丢包率100%,检查本地防火墙或VPN状态。 - 使用
telnet 目标IP 22测试SSH端口(默认22)是否开放。若连接被拒绝,确认服务器端sshd服务是否运行:systemctl status sshd。 - 在Xshell会话属性中,将"连接 → 常规"中的超时时间从默认的20秒调整为60秒(路径:文件 → 属性 → 连接)。
- 若服务器使用非标准端口(如2222),确认Xshell中端口号填写正确。
如果使用云服务器,需在安全组规则中放行对应SSH端口的入站流量。
频繁断连多与Keep-Alive设置或网络中间设备有关:
- 在Xshell中开启心跳包:文件 → 属性 → 连接 → Keep Alive,勾选"发送协议保活包",间隔设为30秒。
- 同时在服务器端编辑
/etc/ssh/sshd_config,添加或修改:ClientAliveInterval 60和ClientAliveCountMax 3,然后重启sshd。 - 若通过NAT网关或负载均衡器连接,检查其空闲超时设置(通常默认300-900秒)。
该错误表示服务器主机密钥与Xshell本地缓存不匹配,常见于服务器重装系统或IP地址变更后。
- 在Xshell中打开 工具 → 主机密钥管理器,找到对应IP的记录并删除。
- 重新连接时,Xshell会弹出新的主机密钥确认对话框,核对指纹后点击"接受并保存"。
- 若确认服务器未被替换,可安全接受新密钥。若有安全顾虑,应通过其他渠道向服务器管理员确认密钥指纹。
密钥认证与登录失败
服务器拒绝密钥通常由权限或配置问题导致,逐项检查:
- 确认服务器端
~/.ssh/authorized_keys文件包含正确的公钥内容,且每个密钥占一行。 - 检查权限:
chmod 700 ~/.ssh和chmod 600 ~/.ssh/authorized_keys。OpenSSH对权限要求严格,权限过大会直接拒绝。 - 确认
/etc/ssh/sshd_config中PubkeyAuthentication yes已启用,且AuthorizedKeysFile路径正确。 - 在Xshell中确认选择了正确的私钥文件:会话属性 → 连接 → 用户身份验证 → 方法选择"Public Key",浏览选择对应的 .pem 或 .ppk 文件。
Xshell支持RSA(2048/4096位)、ED25519、ECDSA等密钥类型。推荐使用ED25519,安全性高且密钥体积小。可通过 工具 → 新建用户密钥生成向导 创建。
密码正确但被拒绝,可能原因:
- 服务器禁用了密码认证:检查
/etc/ssh/sshd_config中PasswordAuthentication是否为yes。 - 用户被限制登录:检查
AllowUsers或AllowGroups配置是否包含当前用户。 - PAM模块限制:查看
/var/log/auth.log(Debian/Ubuntu)或/var/log/secure(CentOS/RHEL)获取详细拒绝原因。 - root用户默认禁止密码登录:
PermitRootLogin可能设为prohibit-password,需改为yes或使用密钥登录。
中文显示与编码设置
中文乱码需要同时确保Xshell客户端和服务器端编码一致:
- 在Xshell中设置编码:文件 → 属性 → 终端 → 编码,选择
UTF-8。 - 确认服务器locale设置:执行
locale命令,输出应包含LANG=en_US.UTF-8或LANG=zh_CN.