掌握 Xshell 基础连接后,本文将介绍 SSH 的高级配置方法,包括更安全的公钥认证、端口转发、连接保活等实用技巧。
一、公钥身份验证(推荐)
相比密码认证,公钥认证更安全且无需每次输入密码。配置分为两步:
步骤 1:生成密钥对
- 在 Xshell 中点击菜单 工具 → 用户密钥管理者
- 点击"生成"按钮,选择密钥类型为
RSA,长度建议 2048 或 4096 - 按提示操作,可为私钥设置 passphrase(密码短语)增加安全性
- 生成完成后,选中密钥点击"导出"保存公钥文件
步骤 2:将公钥部署到服务器
先用密码方式连接服务器,然后执行:
# 在服务器上创建 .ssh 目录(如不存在)
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# 将公钥内容追加到 authorized_keys
echo "你的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
步骤 3:在 Xshell 中配置公钥认证
- 打开会话属性 → 连接 → 用户身份验证
- 方法选择 Public Key
- 用户名填写服务器账号
- 点击"设置"选择刚才生成的用户密钥
- 保存后重新连接,即可免密登录
二、SSH 隧道与端口转发
SSH 隧道可以将本地端口映射到远程服务器,常用于访问内网服务或数据库。
本地端口转发(Local)
场景:通过跳板机访问内网数据库。在会话属性 → 连接 → SSH → 隧道 中添加:
- 类型:Local (Outgoing)
- 源主机:
127.0.0.1 - 侦听端口:
3306(本地端口) - 目标主机:
内网数据库IP - 目标端口:
3306
连接后,访问本地 127.0.0.1:3306 即等同于访问内网数据库。
动态端口转发(SOCKS 代理)
在隧道中添加类型为 Dynamic (SOCKS 4/5) 的规则,侦听端口设为 1080,即可将 Xshell 作为 SOCKS 代理使用。
三、连接保活与自动重连
为防止 SSH 连接因空闲超时被断开:
- 会话属性 → 连接 → 保持活动状态
- 勾选"发送保持活动消息"
- 间隔设为
60秒
同时在服务器端编辑 /etc/ssh/sshd_config:
ClientAliveInterval 60
ClientAliveCountMax 3
修改后重启 SSH 服务:systemctl restart sshd
四、通过代理服务器连接
如果需要通过 HTTP/SOCKS 代理访问服务器:
- 会话属性 → 连接 → 代理
- 选择代理类型(SOCKS4/SOCKS5/HTTP)
- 填写代理服务器地址和端口
- 如代理需要认证,填写用户名和密码
五、会话日志记录
记录终端操作用于审计或回溯:
- 会话属性 → 日志
- 勾选"将日志写入文件"
- 设置日志文件保存路径和命名规则
- 可选择"连接时覆盖"或"连接时追加"模式
六、常见连接问题排查
| 错误信息 | 可能原因 | 解决方法 |
|---|---|---|
| Connection timed out | 网络不通或端口被封 | 检查 IP/端口、防火墙、安全组 |
| Permission denied | 用户名或密码错误 | 核实账号密码,检查服务器 sshd 配置 |
| Connection refused | SSH 服务未运行 | 在服务器执行 systemctl start sshd |
| Host key changed | 服务器密钥变更 | 确认变更合法性后接受新密钥 |