当推送到github时,为什么我总是要求输入我的ssh密码?

时间:2016-02-25 01:44:42

标签: git powershell ssh ssh-agent posh-git

一些事实:

  • 我在Windows 10上
  • 我使用Power Shell和PoshGit(我不想使用cygwin bash shell或其任何衍生物)
  • 我的存储库全部为git@...,即他们不使用https遥控器
  • 当我开始一个新的shell会话时,如果尚未运行,则ssh-agent启动并提示我输入密码,然后保留驻留以供后续会话使用
  • 我已确认ssh-agent正在后台运行
  • 我的id_rsa文件出现在已保存身份列表(ssh-add -l)中,这是我提示输入连接到github存储库时的密码的密钥文件
  • 我还试过github's help page suggestion,特别是:git config --global credential.helper wincred - 它没有做任何事情。

每次推/拉/等等,我找不到一个教程或一点建议就能阻止ssh询问我的密码。

任何帮助都将不胜感激。

修改

对于上下文,Scott Haack关于这应该如何工作的旧文章(虽然显然不适合我): http://haacked.com/archive/2011/12/19/get-git-for-windows.aspx/

修改

ssh -vvvT git@github.com verify生成此(相关代码段):

OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007                 
debug1: Reading configuration data /etc/ssh/ssh_config    
debug2: ssh_connect: needpriv 0                           
debug1: Connecting to github.com [192.30.252.130] port 22.
debug1: Connection established.                           
debug1: identity file /c/Users/xxxxx/.ssh/identity type -1
debug3: Not a RSA1 key file /c/Users/xxxxx/.ssh/id_rsa.   
debug2: key_type_from_name: unknown key type '-----BEGIN' 
debug3: key_read: missing keytype                         
debug2: key_type_from_name: unknown key type 'Proc-Type:' 
debug3: key_read: missing keytype                         
debug2: key_type_from_name: unknown key type 'DEK-Info:'  

我删除并读取了我的密钥文件,并提示输入密码:

D:\> ssh-add -D 
All identities removed.
D:\> ssh-add ~/.ssh/id_rsa
Enter passphrase for /c/Users/xxxxx/.ssh/id_rsa:
Identity added: /c/Users/xxxxx/.ssh/id_rsa (/c/Users/xxxxx/.ssh/id_rsa)
D:\> ssh-add -l 
2048 05:d5:8f:f8:e5:41:66:90:4c:a1:03:93:9d:e5:18:10 /c/Users/xxxxx/.ssh/id_rsa (RSA)

私钥文件如下所示(显然删除了私人详细信息):

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,xxxxxxxxxxxxxxxx

............etc.==
-----END RSA PRIVATE KEY-----

不知道为什么它会以某种方式添加它然后在尝试将其读回时感到困惑。

修改

根据评论和接受的答案,我的PATH指向了一个非常过时的bin文件夹,其中包含我正在使用的ssh-agent和ssh-add(更不用说keygen)。修复它,生成一个新密钥,并将PATH指向正确的,更新的git bin文件夹已经解决了这个问题。

1 个答案:

答案 0 :(得分:1)

有些指南指出openssh的旧版本(是的,当前版本是7.1p1):

  

OpenSSH_4.6p1,OpenSSL 0.9.8e 2007年2月23日

关键看起来也很古老(我希望没有人在生产中使用DES):

  

DEK-Info:DES-EDE3-CBC,xxxxxxxxxxxxxxxx

确保你的PATH中有更新的东西。