手动添加 SSH 私钥到 ssh-agent 以解决Permission denied (publickey) 错误
问题描述:
在 tmux 会话中使用 git push 时,提示需要输入 GitHub 用户名或出现 Permission denied (publickey) 错误,而在普通 shell 下则没有问题。
原因分析:
- tmux 会话未继承 ssh-agent 的环境变量,导致 SSH 密钥未被正确加载,GitHub 认证失败。
- SSH 私钥文件名为 id_ed25519_2,未被自动加载到 ssh-agent。
解决方案:
- 手动将 SSH 私钥添加到 ssh-agent:
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519_2
- 确认 GitHub 账户已添加对应的公钥(id_ed25519_2.pub)。
- 在 tmux 会话中执行 git push,认证即可通过,无需重复输入用户名。
经验总结:
- SSH 认证依赖 ssh-agent 环境,tmux 等多会话工具需注意环境变量继承。
- 多密钥时需手动指定 ssh-add 路径。
- 推荐优先使用 SSH 方式 push,配合 ssh-agent 可实现全局免密认证。