Git Bash&Pageant不使用密钥

我有Git for Windows(configuration为MinTTY和PuTTY\plink.exe )和PuTTY安装,并试图让它与BitBucket存储库一起工作。 我已经将我的SSH密钥加载到了Pageant和网站上,然而每当我尝试做任何需要拉/推的东西时:

 Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 

当我运行build议的ssh -v hg@bitbucket.org它使用id_rsa而不是~/.ssh其他键。 尝试使用ssh-add ~/.ssh/bitbucket_rsa导致:

 Could not open a connection to your authentication agent. 

我已经阅读过有关configurationPuTTY以允许转发的信息,但通常在通知结束的地方,所以我只是将这个选项设置为默认会话并保存在那里。

我运行ps来检查哪些应用程序正在运行,而ssh-agent不在其中。 运行eval 'ssh-agent'启动守护进程,但没有区别。

这是最终为我工作的。

顺便说一下,我也有Windows的bash,但我不认为这很重要。

我安装了plink.exe ,并使用plink.exeputtygen.exepageant.exe指向它的文件夹。 你也可以单独下载和安装。

配置Windows环境变量

  1. 在您的Windows 10搜索栏中键入Environment 。 否则,打开系统属性/高级系统设置并找到您的环境变量。
  2. 添加一个新的系统变量
    • 变量名称 :GIT_SSH
    • 变量值 :指向与plink.exe文件夹也可能有pageant.exeputtygen.exe在同一个文件夹中。
      • 我的是: C:\Program Files (x86)\Atlassian\SourceTree\tools\putty\plink.exe
      • 注意 :较新的SourceTree(Windows上的v2)使用版本化的目录,所以每次更新它时,都必须更新,这很痛苦。 最好只是制作一个plink.exe的副本,并把它放在一个不会改变的地方。
      • 如果您有任何上述程序正在运行,您可以随时打开任务管理器,查找进程,并打开文件夹位置以获取到plink.exe的路径。

利润

确保重新启动您的终端,以便他们得到更新的环境变量。 对于我来说,我在VSCode中为我的集成终端运行bash,所以我不得不重新启动VSCode。 关闭集成终端并打开一个新的终端肯定是可以接受的,但是我也希望VSCode中的内置git功能也能正常工作。

注意

鉴于我已经安装了SourceTree,我可以使用它的接口克隆BitBucket,并通过它的接口,但通过终端尝试不工作,因为他们正在使用不同的凭证集。

另一个有趣的事情是,如果你导航到你的项目的git配置位于: ./.git/config .git/ ./.git/config ,你可以使用ssh替换你的远程到https。 您可以从您的BitBucket存储库上的“概览”中获取以下值。

  • shh布局: git@bitbucket.org:USERNAME/REPO_NAME.git
  • https布局: https://USERNAME@bitbucket.org/USERNAME/REPO_NAME.git

我注意到,当在Windows 10上使用https时,它会使用Windows Credential Manager(我试图自己弄清楚这个问题,但是我仍然在使用SSH,所以没关系)。当你去互动与远程存储库,它会提示你为你的凭据和存储他们以后在Windows凭据管理器使用:)

希望这些方法之一能为你解决。 HTTPS方法将跳过整个SSH密钥生成并将其推送到BitBucket,但感觉更安全和便携。

你正在混合起来。

PuTTY和Pageant与openSSH工具不兼容,不能一起通信。 PuTTY无法读取openssh代理中的密钥,openssh也无法读取Pageant中的密钥。 关键格式也不同。 在这个世界上这是不好的事情,但是没有解决的办法。

另外,“代理转发”与“使用代理”不同。

如果你用plink设置Git(确保你真的做了),检查你的选美是否正在运行,并且如果在你的存储在PuTTY中的配置文件下的Connection-> SSH-> Auth,选项“尝试使用选美器进行认证”被选中。

如果它不能解决你的问题,从putty发布一些调试日志。

你不需要putty在ssh中使用BitBucket:打包在git-for-windows中的openssh( C:\prgs\git\PortableGit-2.7.0-64-bit\usr\bin\ssh.exe )精细。

确保在你当前的shell会话中,你已经将HOME设置为%USERPROFILE%PortableGit-2.7.0-64-bit\git-cmd.exe就足以打开正确配置的正常CMD)

%USERPROFILE%\.ssh创建一个名为config的文件(如Atlassian doc的步骤3 ):

 Host bitbucket.org IdentityFile ~/.ssh/bitbucket_rsa 

(你也可以使用“ /C/path/to/bitbucket_rsa ”)

这允许使用ssh url,比如bitbucket.org:user/repo
使用ssh -Tv bitbucket.org测试它(当然,将您的公钥添加到您的BitBucket帐户后)

注意:只有当您的私钥被密码保护时才需要ssh-agent

要从git bash中访问Pegeant中加载的ssh密钥,可以使用Git-on-Windows自带的程序 。 在链接页面上描述安装过程。