掌握 Xshell 基础连接后,本文将介绍 SSH 的高级配置方法,包括更安全的公钥认证、端口转发、连接保活等实用技巧。

一、公钥身份验证(推荐)

相比密码认证,公钥认证更安全且无需每次输入密码。配置分为两步:

步骤 1:生成密钥对

  1. 在 Xshell 中点击菜单 工具 → 用户密钥管理者
  2. 点击"生成"按钮,选择密钥类型为 RSA,长度建议 2048 或 4096
  3. 按提示操作,可为私钥设置 passphrase(密码短语)增加安全性
  4. 生成完成后,选中密钥点击"导出"保存公钥文件

步骤 2:将公钥部署到服务器

先用密码方式连接服务器,然后执行:

# 在服务器上创建 .ssh 目录(如不存在)
mkdir -p ~/.ssh
chmod 700 ~/.ssh

# 将公钥内容追加到 authorized_keys
echo "你的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

步骤 3:在 Xshell 中配置公钥认证

  1. 打开会话属性 → 连接 → 用户身份验证
  2. 方法选择 Public Key
  3. 用户名填写服务器账号
  4. 点击"设置"选择刚才生成的用户密钥
  5. 保存后重新连接,即可免密登录

二、SSH 隧道与端口转发

SSH 隧道可以将本地端口映射到远程服务器,常用于访问内网服务或数据库。

本地端口转发(Local)

场景:通过跳板机访问内网数据库。在会话属性 → 连接 → SSH → 隧道 中添加:

连接后,访问本地 127.0.0.1:3306 即等同于访问内网数据库。

动态端口转发(SOCKS 代理)

在隧道中添加类型为 Dynamic (SOCKS 4/5) 的规则,侦听端口设为 1080,即可将 Xshell 作为 SOCKS 代理使用。

三、连接保活与自动重连

为防止 SSH 连接因空闲超时被断开:

  1. 会话属性 → 连接 → 保持活动状态
  2. 勾选"发送保持活动消息"
  3. 间隔设为 60

同时在服务器端编辑 /etc/ssh/sshd_config

ClientAliveInterval 60
ClientAliveCountMax 3

修改后重启 SSH 服务:systemctl restart sshd

四、通过代理服务器连接

如果需要通过 HTTP/SOCKS 代理访问服务器:

  1. 会话属性 → 连接 → 代理
  2. 选择代理类型(SOCKS4/SOCKS5/HTTP)
  3. 填写代理服务器地址和端口
  4. 如代理需要认证,填写用户名和密码

五、会话日志记录

记录终端操作用于审计或回溯:

  1. 会话属性 → 日志
  2. 勾选"将日志写入文件"
  3. 设置日志文件保存路径和命名规则
  4. 可选择"连接时覆盖"或"连接时追加"模式

六、常见连接问题排查

错误信息 可能原因 解决方法
Connection timed out 网络不通或端口被封 检查 IP/端口、防火墙、安全组
Permission denied 用户名或密码错误 核实账号密码,检查服务器 sshd 配置
Connection refused SSH 服务未运行 在服务器执行 systemctl start sshd
Host key changed 服务器密钥变更 确认变更合法性后接受新密钥

相关教程