我有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.exe
, puttygen.exe
和pageant.exe
指向它的文件夹。 你也可以单独下载和安装。
Environment
。 否则,打开系统属性/高级系统设置并找到您的环境变量。 plink.exe
文件夹也可能有pageant.exe
和puttygen.exe
在同一个文件夹中。
C:\Program Files (x86)\Atlassian\SourceTree\tools\putty\plink.exe
plink.exe
的副本,并把它放在一个不会改变的地方。 plink.exe
的路径。 确保重新启动您的终端,以便他们得到更新的环境变量。 对于我来说,我在VSCode中为我的集成终端运行bash,所以我不得不重新启动VSCode。 关闭集成终端并打开一个新的终端肯定是可以接受的,但是我也希望VSCode中的内置git功能也能正常工作。
鉴于我已经安装了SourceTree,我可以使用它的接口克隆BitBucket,并通过它的接口,但通过终端尝试不工作,因为他们正在使用不同的凭证集。
另一个有趣的事情是,如果你导航到你的项目的git配置位于: ./.git/config
.git/ ./.git/config
,你可以使用ssh替换你的远程到https。 您可以从您的BitBucket存储库上的“概览”中获取以下值。
git@bitbucket.org:USERNAME/REPO_NAME.git
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自带的程序 。 在链接页面上描述安装过程。