mac可通过钥匙串自动保存ssh私钥密码,执行eval "$(ssh-agent -s)"和ssh-add --apple-use-keychain ~/.ssh/id_ed25519(或id_rsa),输入一次密码后即可免密登录;需确保私钥带passphrase且权限为-rw-------。

Mac每次SSH连接都要输私钥密码,光标不动、没反馈、手抖按错还得重来,尤其半夜处理故障时更让人抓狂。用系统自带的钥匙串自动记住密码,就能让终端彻底告别交互式输入。
确认私钥已生成并带密码保护
先检查你是否已有带密码的私钥:打开终端,执行 ls -l ~/.ssh/id_*.pub,若看到 id_ed25519.pub 或 id_rsa.pub,再运行 ls -l ~/.ssh/id_* 查看对应私钥是否存在且权限为 -rw-------。如果私钥是空密码(即生成时直接回车跳过),这一步无法生效——【必须是带passphrase的私钥才能被钥匙串接管】。
启动ssh-agent并把私钥交由钥匙串管理
在终端中依次执行以下命令:
① 启动代理进程:eval "$(ssh-agent -s)"
② 将私钥添加进钥匙串:ssh-add --apple-use-keychain ~/.ssh/id_ed25519(若用RSA密钥则替换为 id_rsa)
执行第二步时会弹出图形密码框,输入一次你的私钥密码即可。此后钥匙串将永久保存该密码,下次SSH连接时不再提示。注意:macOS Sonoma 及更新系统中,--apple-use-keychain 是唯一可靠方式,旧版的 -K 参数已被弃用。
验证钥匙串是否已成功接管
方法一:执行 ssh-add -l,输出中若包含 /Users/xxx/.ssh/id_ed25519 (RSA-SHA256:xx) 且末尾显示 agent has stored key,说明已托管成功。
方法二:直接尝试连接远程服务器,如 ssh user@192.168.1.100。若未弹出密码框且直接登录成功,即表示钥匙串已生效。
若仍提示输入私钥密码,请检查是否漏掉 --apple-use-keychain 参数,或确认钥匙串中是否已存在同名条目(可在“钥匙串访问”App里搜索 id_ed25519 并删除旧记录后重试)。











