在使用 ssh-keygen
生成多个密钥对并配置到不同服务或服务器时,需通过以下步骤实现安全隔离和灵活管理:
1. 生成多个密钥对
为不同服务(如 GitHub、服务器、云平台等)生成独立的密钥对,避免重复使用同一密钥。
示例:生成两个密钥对(RSA 和 ED25519 类型):
# 生成 GitHub 专用密钥(ED25519 类型,推荐)
ssh-keygen -t ed25519 -m pem -C "github@example.com" -f ~/.ssh/github_ed25519
# 生成服务器专用密钥(RSA 4096 位)
ssh-keygen -t rsa -m pem -b 4096 -C "server@example.com" -f ~/.ssh/server_rsa
关键参数:
-t
:指定密钥类型(ed25519
更安全高效,rsa
兼容性更好)。-f
:自定义密钥文件名(避免覆盖默认的id_rsa
)。-C
:注释(用于标识用途,如邮箱或服务名称)。
2. 配置多密钥自动识别
通过 SSH 配置文件 ~/.ssh/config
指定不同服务使用对应的私钥。
示例配置:
# GitHub 使用 ed25519 密钥
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/github_ed25519
IdentitiesOnly yes # 强制仅使用指定密钥
# 公司服务器使用 RSA 密钥
Host company-server
HostName 192.168.1.100
User admin
IdentityFile ~/.ssh/server_rsa
Port 2222 # 自定义端口
生效配置:
chmod 600 ~/.ssh/config # 必须设置权限
3. 部署公钥到目标服务
将公钥(.pub
文件)分发到不同服务或服务器:
(1) 服务器场景
-
自动部署:使用
ssh-copy-id
命令(需指定对应公钥):ssh-copy-id -i ~/.ssh/server_rsa.pub admin@192.168.1.100 -p 2222
手动部署:将公钥内容追加到目标服务器的
~/.ssh/authorized_keys
:cat ~/.ssh/server_rsa.pub | ssh -p 2222 admin@192.168.1.100 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys"
(2) Git 平台(GitHub/GitLab)
将公钥内容(如
github_ed25519.pub
)复制到平台的 SSH Keys 配置页面。
4. 验证密钥连接
测试不同服务的连通性:
# 测试 GitHub 连接 ssh -T git@github.com # 测试服务器连接 ssh admin@company-server