步骤概览:

  1. 选择密钥类型(推荐 ed25519 或 RSA 4096)。
  2. 使用 ssh-keygen 生成密钥对并设置安全口令(可选但推荐)。
  3. 启动并向 ssh-agent 添加私钥(保持会话登录无需每次输入口令)。
  4. 将公钥复制并粘贴到 GitHub / 服务器 authorized_keys(或平台的 SSH keys 页面)。
  5. 测试 SSH 连接并验证配置。

常用命令(复制到终端执行):

  1. 生成 ed25519(推荐):
# filepath: c:\Users\TOPWAY0814\Documents\AI知识分析\项目设计\total\ssh-key-generation.md
ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_ed25519
# -t 指定类型, -C 添加注释, -f 指定输出文件路径
  1. 如果需要与旧系统兼容或不支持 ed25519,可使用 RSA 4096:
# filepath: c:\Users\TOPWAY0814\Documents\AI知识分析\项目设计\total\ssh-key-generation.md
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/id_rsa
  1. 启动并添加到 ssh-agent(Linux / macOS / WSL):
# filepath: c:\Users\TOPWAY0814\Documents\AI知识分析\项目设计\total\ssh-key-generation.md
# 启动 agent(如果尚未启动)
eval "$(ssh-agent -s)"
# 将私钥添加到 agent(如果设置了口令,系统会提示输入)
ssh-add ~/.ssh/id_ed25519
# 或对于 RSA
ssh-add ~/.ssh/id_rsa

Windows(PowerShell / OpenSSH 客户端):

# filepath: c:\Users\TOPWAY0814\Documents\AI知识分析\项目设计\total\ssh-key-generation.md
# 使用内置 OpenSSH(Windows 10/11)
ssh-keygen -t ed25519 -C "your_email@example.com" -f $env:USERPROFILE\.ssh\id_ed25519
# 启动 ssh-agent 服务并添加密钥(PowerShell 需要管理员启动服务一次)
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519
  1. 复制公钥到剪贴板(以便粘贴到 GitHub / 服务器):
  • Linux / WSL:
# 将公钥内容复制到剪贴板
cat ~/.ssh/id_ed25519.pub | clip.exe   # WSL -> Windows 剪贴板
# 或
xclip -selection clipboard < ~/.ssh/id_ed25519.pub
  • macOS:
pbcopy < ~/.ssh/id_ed25519.pub
  • Windows PowerShell:
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | Set-Clipboard
  1. 在 GitHub 添加公钥
  • 进入 GitHub -> Settings -> SSH and GPG keys -> New SSH key,粘贴公钥并保存。
  1. 将公钥添加到远程服务器(authorized_keys):
# 将本地公钥追加到远程服务器 ~/.ssh/authorized_keys(假设已能用密码登录)
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@remote.host
# 若没有 ssh-copy-id,可手动:
cat ~/.ssh/id_ed25519.pub | ssh user@remote.host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
  1. 测试连接
# 测试到 GitHub
ssh -T git@github.com

# 测试到自有服务器
ssh user@remote.host
  1. 在 SSH config 中添加/指定私钥(示例)
# filepath: c:\Users\TOPWAY0814\Documents\AI知识分析\项目设计\total\ssh-key-generation.md
Host github.com
  HostName ssh.github.com
  Port 443
  User git
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes

Host myserver
  HostName 192.0.2.10
  User ubuntu
  IdentityFile ~/.ssh/id_ed25519

注意事项(简短):

  • 私钥(~/.ssh/id_ed25519 或 id_rsa)必须保密,权限应为 600;公钥可公开。
  • 若已有多个 key,可在 config 中为不同 Host 指定不同 IdentityFile。
  • 若使用 GitHub,确保使用 git@github.com 用户名进行测试。
  • 若在 Windows WSL 与 Windows 主机间使用密钥,注意路径与剪贴板工具(clip.exe)差异。

常见问题快速排查:

  • 权限问题:远程服务器 ~/.ssh 目录权限应为 700,authorized_keys 为 600。
  • Agent 未加载:确认 ssh-add -l 列出已加载密钥。
  • 配置冲突:使用 ssh -v user@host 查看详细调试信息并定位 IdentityFile 使用情况。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐