SSH 密钥生成与配置(Windows / WSL / Linux)
·
步骤概览:
- 选择密钥类型(推荐 ed25519 或 RSA 4096)。
- 使用 ssh-keygen 生成密钥对并设置安全口令(可选但推荐)。
- 启动并向 ssh-agent 添加私钥(保持会话登录无需每次输入口令)。
- 将公钥复制并粘贴到 GitHub / 服务器 authorized_keys(或平台的 SSH keys 页面)。
- 测试 SSH 连接并验证配置。
常用命令(复制到终端执行):
- 生成 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 指定输出文件路径
- 如果需要与旧系统兼容或不支持 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
- 启动并添加到 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
- 复制公钥到剪贴板(以便粘贴到 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
- 在 GitHub 添加公钥
- 进入 GitHub -> Settings -> SSH and GPG keys -> New SSH key,粘贴公钥并保存。
- 将公钥添加到远程服务器(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"
- 测试连接
# 测试到 GitHub
ssh -T git@github.com
# 测试到自有服务器
ssh user@remote.host
- 在 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 使用情况。
更多推荐




所有评论(0)