密码登录适合临时验证,长期管理服务器时更适合使用公钥认证。下面把客户端、服务器和网络设备三侧的设置拆开,便于定位“密钥不生效”和“连接一段时间后断开”这两类问题。

先确认认证链路

公钥认证至少包含三份信息:客户端持有的私钥、服务器账号目录中的公钥,以及 Xshell 会话中选中的私钥。三者必须属于同一对密钥。服务器账号、家目录和 SSH 服务配置也会影响最终结果。

  1. 确认登录用户名,不要把 A 用户生成的公钥放到 B 用户目录。
  2. 在 Xshell 中找到用户身份验证设置,选择 Public Key 和对应私钥。
  3. 把公钥内容追加到服务器用户的 ~/.ssh/authorized_keys,不要把私钥复制到服务器。
  4. 检查目录和文件权限,再断开当前会话重新测试。

检查服务器端权限

常见权限参考是 ~/.ssh 使用 700,authorized_keys 使用 600,文件所有者应为实际登录用户。若服务器启用了 SELinux、集中认证或额外的 AllowUsers 规则,还要结合系统日志判断。

排查原则:不要为了让认证通过而扩大整个家目录权限。先确认所有者、路径和 SSH 服务读取的配置文件,再做最小范围调整。

让空闲会话更稳定

在 Xshell 会话属性中启用保持活动消息,并根据网络设备策略设置合理间隔。服务器端也可能配置 ClientAliveIntervalClientAliveCountMax。修改服务端配置后,要先检查配置语法,再按发行版方式重载 SSH 服务。

理解三种转发

配置转发前应明确监听地址、目标地址和允许访问的范围,不要把调试端口暴露给不需要访问的网络。

按错误信息缩小范围

相关内容