首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git Bash和Pageant不使用密钥

Git Bash和Pageant不使用密钥
EN

Stack Overflow用户
提问于 2016-01-31 03:40:52
回答 6查看 62K关注 0票数 78

我已经安装了Git (为MinTTY和PuTTY\plink.exe配置)和PuTTY,并且正在尝试让它与Bitbucket存储库一起工作。我已经在Pageant和网站上加载了我的SSH密钥,但是每当我试图做任何需要拉/推的事情时:

代码语言:javascript
复制
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

当我运行建议的ssh -v hg@bitbucket.org时,它使用id_rsa,但在~/.ssh中没有使用其他键。尝试使用ssh-add ~/.ssh/bitbucket_rsa会导致以下结果:

代码语言:javascript
复制
Could not open a connection to your authentication agent.

我读过关于配置PuTTY以允许转发的文章,但这通常是建议结束的地方,所以我只是为默认会话设置了这个选项,并将其保存在那里。

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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-04-10 00:47:38

这就是最后为我工作的原因。

顺便说一句,我也有Windows上的Bash,但我认为这并不重要。

我安装了Sourcetree,并用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

代码语言:javascript
复制
    - **Note**: Newer versions of Sourcetree seem to install ot `%localappdata%`. The tools are located at `%localappdata%\SourceTree\app-x.x.x\tools\putty`
代码语言:javascript
复制
    - **Note**: The newer Sourcetree (v2 on Windows) uses versioned directories, so every time you update it, you'll have to update this which is a pain. It is best to just make a copy of `plink.exe` and put it somewhere that's not going to change.
代码语言:javascript
复制
    - If you have any of the above programs running you can always open up task manager, find the process, and open up the folder location to get the path to `plink.exe`.

利润

确保重新启动您的终端,以便它们获得更新的环境变量。对我来说,我在Visual Studio代码中为我的集成终端运行Bash,所以我不得不重新启动Visual代码。关闭集成终端并打开新的终端肯定是可以接受的,但我也希望Visual代码中内置的git功能也能工作。

备注

考虑到我已经安装了Sourcetree,我能够使用它的接口从Bitbucket中克隆出来并推入它的接口,但是尝试通过终端并不有效,因为它们使用的是不同的凭据集。

另一件有趣的事情是,如果您导航到位于:./.git/config的项目的git配置中,您可以将遥控器从SSH切换到HTTPS。您可以从Bitbucket存储库的概述中获取以下值。

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

我注意到,在Windows 10上使用HTTPS时,它将使用Windows凭据管理器(我尝试在此基础上添加凭据,但我仍然使用SSH,所以没关系),当您与远程存储库交互时,它会提示您输入凭据,并将它们存储在Windows凭证管理器中:)

希望这些方法中的一种会对你有帮助。HTTPS方法将跳过整个SSH密钥生成过程,并将其推到Bitbucket中,但对我来说,它更安全、更便携。

Mac OS

您可能需要将密钥添加到密钥链中,特别是在使用Visual代码并在密钥上有密码的情况下(目前,Visual代码将不允许您键入密码)。

代码语言:javascript
复制
ssh-add -K ~/.ssh/id_rsa

https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/#adding-your-ssh-key-to-the-ssh-agent

添加

我不确定这些是否对某人有帮助,但我一直在关注:https://github.com/Microsoft/vscode/issues/13680中对SSH的支持。

票数 146
EN

Stack Overflow用户

发布于 2016-01-31 16:19:14

你把事情搞混了。

PuTTY和Pageant不兼容OpenSSH工具,无法在一起进行通信。PuTTY不能从OpenSSH代理中读取密钥,OpenSSH不能从Pageant读取密钥。键格式也不同。这在这个世界上是一件坏事,但没有解决办法。

“代理转发”也不同于“使用代理”。

如果您使用plink设置Git (请确保确实安装了),请检查Pageant是否正在运行,以及在Connection→SSH→Auth下的存储配置文件中是否选中了“尝试使用Pageant身份验证”选项。

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

票数 7
EN

Stack Overflow用户

发布于 2016-01-31 06:25:09

您不需要PuTTY在ssh中使用Bitbucket :在git-for-windows中打包的OpenSSH版本(C:\prgs\git\PortableGit-2.7.0-64-bit\usr\bin\ssh.exe)工作得很好。

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

config中创建一个名为%USERPROFILE%\.ssh的文件(如亚特兰西岛文献的第三步):

代码语言:javascript
复制
Host bitbucket.org
 IdentityFile ~/.ssh/bitbucket_rsa

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

它允许使用像bitbucket.org:user/repo这样的SSH。使用ssh -Tv bitbucket.org测试它(当然,在将您的公钥添加到Bitbucket帐户之后)。

注意:只有当私钥受到密码保护时才需要ssh-agent

更新2018年,两年后:"向PuTTY告别,因为微软在Windows 10中添加了一个OpenSSH客户端“。现在是抛开腻子的时候了:不需要使用不同的密钥格式和专有解决方案,因为OpenSSH正式发布为Windows (目前处于测试版,Q1 2018年)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35110079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档