跳到主要内容

密钥认证

SSH 密钥认证使用公钥/私钥对进行身份验证,比密码认证更安全,也更适合自动化场景。

密钥认证原理

SSH 密钥认证基于非对称加密:

  1. 公钥:部署到服务器的 ~/.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"

按提示操作:

  1. 密钥保存位置:默认 ~/.ssh/id_ed25519~/.ssh/id_rsa,直接回车使用默认路径
  2. 密钥密码:可选,为私钥设置保护密码

密钥类型选择

类型说明推荐场景
ED25519现代算法,安全性高,密钥短首选,除非有兼容性要求
RSA传统算法,兼容性好需要连接旧系统时使用
ECDSA椭圆曲线算法较少使用

配置密钥认证

方式一:直接输入私钥

  1. 创建或编辑 SSH 连接
  2. 验证方式 设置为 秘钥
  3. 填写登录信息

密钥认证配置

字段说明必填
登录用户SSH 登录用户名
登录秘钥私钥内容(PEM 格式)
秘钥密码私钥的保护密码(如果设置了的话)

方式二:加载本地秘钥

点击 加载本地秘钥 按钮,可以从本地文件系统选择私钥文件。常见的私钥路径:

  • macOS/Linux:~/.ssh/id_ed25519~/.ssh/id_rsa
  • Windows:C:\Users\用户名\.ssh\id_ed25519C:\Users\用户名\.ssh\id_rsa

方式三:拖拽上传

将私钥文件直接拖拽到 点击/拖拽文件上传秘钥 区域即可。

部署公钥到服务器

私钥配置好后,需要将对应的公钥部署到服务器。

方法一:ssh-copy-id(推荐)

# 使用密码认证将公钥复制到服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server

方法二:手动复制

  1. 查看公钥内容:
cat ~/.ssh/id_ed25519.pub
  1. 登录服务器,将公钥添加到 ~/.ssh/authorized_keys
# 确保目录和文件存在
mkdir -p ~/.ssh
chmod 700 ~/.ssh

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

身份管理

当多台服务器使用相同的密钥时,可以使用 登录凭证 功能统一管理。

创建登录凭证

  1. 验证方式 设置为 登录凭证
  2. 点击 编辑登录凭证 打开凭证管理

登录凭证配置

凭证管理功能

  • 创建、编辑、删除凭证
  • 支持本地仓库和云端仓库
  • 凭证可被多个连接复用
  • 修改凭证后所有关联连接自动更新

凭证类型

登录凭证支持三种类型:

类型说明
密码保存用户名和密码
私钥保存用户名、私钥和私钥密码
交互认证保存用户名,用于 keyboard-interactive 认证

常见问题

Permission denied (publickey)

可能原因:

  1. 公钥未部署:确认公钥已添加到服务器的 authorized_keys
  2. 权限问题
    • .ssh 目录权限应为 700
    • authorized_keys 文件权限应为 600
  3. 私钥不匹配:确认使用的私钥与服务器上的公钥是一对
  4. 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

私钥密码输入后仍然失败

  1. 确认密码正确
  2. 检查私钥文件是否损坏
  3. 尝试重新生成密钥对

下一步