Mac 上生成和管理 SSH 密钥应优先使用 ssh-keygen -t ed25519 生成密钥,检查 ~/.ssh 是否已存在密钥,设强 passphrase,通过 ssh-add --apple-use-keychain 加入钥匙串,复制公钥并收紧 ~/.ssh 权限。
mac 上生成和管理 ssh 密钥,核心是用系统自带的 ssh-keygen 命令,无需安装额外工具。关键在选对算法、设好路径、管住私钥——不是“生成完就完事”,而是“生成即管理”。
先检查有没有现成密钥
重复生成容易搞混,尤其多账号(比如工作 GitHub + 个人 Gitee)时。打开终端执行:
ls -al ~/.ssh
看输出里有没有 id_ed25519、id_rsa 或对应 .pub 文件。有且你知道用途,就跳过新建;没有或不确定,再继续。
优先用 ed25519 算法生成密钥
这是 macOS 10.15 及以上默认推荐:更短、更快、更抗攻击,GitHub/GitLab/主流云服务器全支持。
- 运行命令:
ssh-keygen -t ed25519 -C "your_email@example.com"(把邮箱换成你注册平台用的) - 提示 “Enter file in which to save the key” 时,直接回车——用默认路径
~/.ssh/id_ed25519,别改,否则 git、ssh 工具可能找不到 - 设置 passphrase:建议输 4 位以上(如
ab12),不为空。空密码虽免交互,但私钥文件一旦被拷走,别人就能直接登录你所有服务
需要兼容老系统时用 4096 位 RSA
目标服务器跑的是 OpenSSH < 6.8(比如某些嵌入式设备、定制 Linux),ed25519 会被拒,这时必须用 RSA。
- 运行命令:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" - 同样回车用默认路径
~/.ssh/id_rsa - passphrase 同样不要留空,输入后需确认两次
生成后必须做的三件事
光有密钥文件不够,得让系统认得它、用得顺、护得住:
-
加进 ssh-agent 并存入钥匙串:运行
eval "$(ssh-agent -s)",再运行ssh-add --apple-use-keychain ~/.ssh/id_ed25519(RSA 就换为id_rsa)。这样以后每次 ssh 或 git push,macOS 会自动从钥匙串取 passphrase,不用反复输 -
复制公钥内容:用
cat ~/.ssh/id_ed25519.pub | pbcopy(或直接pbcopy < ~/.ssh/id_ed25519.pub),粘贴到 GitHub/GitLab/服务器的 SSH Keys 设置页 -
收紧权限:执行
chmod 700 ~/.ssh && chmod 600 ~/.ssh/id_ed25519*。权限太松,OpenSSH 会直接拒绝使用私钥


















