You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

克隆GitHub项目时SSH反复要求输入passphrase如何解决

问题解答

这个现象不属于正常情况,push操作能复用ssh-agent缓存的passphrase,说明agent本身运行正常,clone反复要求输入passphrase是配置没有覆盖全场景导致的,按以下步骤调整即可实现一次输入passphrase后所有Git SSH操作都免重复输入:

  • 校验当前会话的密钥加载状态
    在执行clone操作的终端会话里直接运行ssh-add -l,查看输出的密钥指纹列表,如果找不到你绑定GitHub账号的那把SSH私钥(通常路径是~/.ssh/id_ed25519或~/.ssh/id_rsa),说明当前会话的ssh-agent没加载到对应密钥。直接运行ssh-add 你的私钥完整路径,输入一次passphrase完成加载后,当前会话内再执行clone就不会重复索要密码。

  • 补全fish_ssh_agent的持久化配置
    多数情况下push正常、新开终端clone就反复要密码,是因为fish_ssh_agent的初始化逻辑没有写入fish的启动配置,新开终端时没有自动关联已运行的ssh-agent进程。你只需要打开~/.config/fish/config.fish文件,在末尾追加fish_ssh_agent配置行,保存后重启终端即可,后续同个WSL运行周期内新开的fish会话都会自动连接已有的ssh-agent,不需要重复加载密钥。

  • 修复WSL2环境下的SSH配置冲突
    WSL2默认会尝试复用Windows宿主机的ssh-agent服务,如果你Windows侧没有配置对应GitHub密钥、或是两边密钥不一致,SSH在clone时会优先尝试读取Windows侧的空密钥缓存,触发passphrase输入提示。你可以在WSL环境的~/.ssh/config文件(没有就新建一个)添加以下配置,强制SSH使用本地存储的GitHub密钥、并自动把密钥加到agent缓存:

    Host github.com
      HostName github.com
      User git
      IdentityFile ~/.ssh/id_ed25519  # 替换成你自己的GitHub私钥实际路径
      IdentitiesOnly yes
      AddKeysToAgent yes
    

注意:如果配置后仍然提示输入passphrase,可以检查私钥文件权限,执行chmod 600 ~/.ssh/你的私钥文件名修正权限,SSH会拒绝加载权限过宽的私钥到agent缓存。

  • 验证配置效果
    配置完成后运行ssh -T git@github.com,第一次如果提示输入passphrase就输入一次,后续再执行clone、pull、push等所有走SSH协议的GitHub操作,都不会再重复要求输入passphrase,和你之前push的体验完全一致。

内容的提问来源于stack exchange,提问作者RostoRM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 09:48:12