密钥认证
SSH 密钥认证使用公钥/私钥对进行身份验证,比密码认证更安全,也更适合自动化场景。
密钥认证原理
SSH 密钥认证基于非对称加密:
- 公钥:部署到服务器的
~/.ssh/authorized_keys文件
连接时,服务器使用公钥加密一段随机数据,客户端用私钥解密并返回,以此证明身份。
生成密钥对
如果还没有 SSH 密钥对,需要先生成。
使用 ssh-keygen 命令
打开本地终端,执行以下命令:
# 生成 ED25519 密钥(推荐)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 或生成 RSA 密钥(兼容性更好)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
按提示操作:
- 密钥保存位置:默认
~/.ssh/id_ed25519或~/.ssh/id_rsa,直接回车使用默认路径 - 密钥密码:可选,为私钥设置保护密码
密钥类型选择
| 类型 | 说明 | 推荐场景 |
|---|---|---|
| ED25519 | 现代算法,安全性高,密钥短 | 首选,除非有兼容性要求 |
| RSA | 传统算法,兼容性好 | 需要连接旧系统时使用 |
| ECDSA | 椭圆曲线算法 | 较少使用 |
配置密钥认证
方式一:直接输入私钥
- 创建或编辑 SSH 连接
- 将 验证方式 设置为 秘钥
- 填写登录信息

| 字段 | 说明 | 必填 |
|---|---|---|
| 登录用户 | SSH 登录用户名 | 是 |
| 登录秘钥 | 私钥内容(PEM 格式) | 是 |
| 秘钥密码 | 私钥的保护密码(如果设置了的话) | 否 |
方式二:加载本地秘钥
点击 加载本地秘钥 按钮,可以从本地文件系统选择私钥文件。常见的私钥路径:
- macOS/Linux:
~/.ssh/id_ed25519或~/.ssh/id_rsa - Windows:
C:\Users\用户名\.ssh\id_ed25519或C:\Users\用户名\.ssh\id_rsa
方式三:拖拽上传
将私钥文件直接拖拽到 点击/拖拽文件上传秘钥 区域即可。
部署公钥到服务器
私钥配置好后,需要将对应的公钥部署到服务器。
方法一:ssh-copy-id(推荐)
# 使用密码认证将公钥复制到服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server
方法二:手动复制
- 查看公钥内容:
cat ~/.ssh/id_ed25519.pub
- 登录服务器,将公钥添加到
~/.ssh/authorized_keys:
# 确保目录和文件存在
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# 追加公钥
echo "公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
身份管理
当多台服务器使用相同的密钥时,可以使用 登录凭证 功能统一管理。
创建登录凭证
- 将 验证方式 设置为 登录凭证
- 点击 编辑登录凭证 打开凭证管理

凭证管理功能
- 创建、编辑、删除凭证
- 支持本地仓库和云端仓库
- 凭证可被多个连接复用
- 修改凭证后所有关联连接自动更新
凭证类型
登录凭证支持三种类型:
| 类型 | 说明 |
|---|---|
| 密码 | 保存用户名和密码 |
| 私钥 | 保存用户名、私钥和私钥密码 |
| 交互认证 | 保存用户名,用于 keyboard-interactive 认证 |
常见问题
Permission denied (publickey)
可能原因:
- 公钥未部署:确认公钥已添加到服务器的
authorized_keys - 权限问题:
.ssh目录权限应为 700authorized_keys文件权限应为 600
- 私钥不匹配:确认使用的私钥与服务器上的公钥是一对
- SELinux:某些系统需要
restorecon -R ~/.ssh
私钥格式错误
XTerminal 支持以下私钥格式:
- OpenSSH 格式(以
-----BEGIN OPENSSH PRIVATE KEY-----开头) - PEM 格式(以
-----BEGIN RSA PRIVATE KEY-----开头)
如果私钥格式不支持,可以使用以下命令转换:
# 转换为 PEM 格式
ssh-keygen -p -m PEM -f ~/.ssh/id_rsa
私钥密码输入后仍然失败
- 确认密码正确
- 检查私钥文件是否损坏
- 尝试重新生成密钥对