我已经安装了Git for Windows(配置为MinTTY和PuTTY\plink.exe
)和PuTTY,我试图让它与Bitbucket仓库一起工作。我已经在Pageant和网站上加载了我的SSH密钥,但是每当我尝试做任何需要拉/推的事情时:
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 [[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection)
时,它使用了id_rsa
,但没有使用~/.ssh
中的其他键。尝试使用ssh-add ~/.ssh/bitbucket_rsa
会导致:
Could not open a connection to your authentication agent.
型
我读过关于配置PuTTY以允许转发的内容,但这通常是建议的结尾,所以我只是为默认会话设置了这个选项并将其保存在那里。
我运行ps
来检查哪些应用程序正在运行,ssh-agent
不在其中。运行eval 'ssh-agent'
会启动守护进程,但这没有什么区别。
7条答案
按热度按时间64jmpszr1#
这就是最终为我工作的原因。
顺便说一句,我在Windows上也有Bash,但我不认为这很重要。
我安装了Sourcetree,并指向它的文件夹
plink.exe
,puttygen.exe
和pageant.exe
。您也可以单独下载和安装这些。配置Windows环境变量
1.在Windows 10搜索栏中键入
Environment
。否则,打开系统属性/高级系统设置并找到环境变量。*变量名:GIT_SSH
*变量值:
plink.exe
文件的完整路径(pageant.exe
和puttygen.exe
可能在同一个文件夹中)。C:\Program Files (x86)\Atlassian\SourceTree\tools\putty\plink.exe
*注意:较新版本的Sourcetree似乎安装了
%localappdata%
,工具位于%localappdata%\SourceTree\app-x.x.x\tools\putty
*备注:较新的Sourcetree(Windows上的v2)使用版本化目录,所以每次更新它时,你都必须更新它,这是一个痛苦。最好只是复制
plink.exe
并将其放在不会更改的地方。plink.exe
。收益
请确保重新启动您的终端,以便它们获得更新的环境变量。对我来说,我在Visual Studio Code中为我的集成终端运行Bash,所以我必须重新启动Visual Studio Code。关闭集成终端并打开一个新终端肯定是可以接受的,但我也希望Visual Studio Code中内置的git功能也能正常工作。
注意事项
考虑到我已经安装了Sourcetree,我可以使用它的接口从Bitbucket中克隆出来,并通过它的接口进行推送,但是尝试通过终端无法工作,因为它们使用的是不同的凭据集。
另一个需要指出的有趣的事情是,如果你导航到项目的git配置位于:
./.git/config
,你可以将你的远程从使用SSH切换到HTTPS。你可以从Bitbucket仓库的 Overview 中获取以下值。[[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection) :USERNAME/REPO_NAME.git
https:// [[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection) /USERNAME/REPO_NAME.git
我注意到,在Windows 10上使用HTTPS时,它将使用Windows凭据管理器(我尝试在尝试自己解决这个问题时将凭据添加到其中,但我仍然使用SSH,所以这并不重要)当您与远程存储库交互时,它会提示您输入凭据并将其存储在Windows凭据管理器中供以后使用:)
希望这些方法中的一个能为你工作。HTTPS方法将跳过整个SSH密钥生成并将其推送到Bitbucket,但对我来说感觉更安全和便携。
Mac OS
您可能需要将密钥添加到密钥串中,特别是如果您使用Visual Studio Code并且密钥上有密码(当前Visual Studio Code不允许您键入密码)。
字符串
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
新增内容
我不确定这些是否对某人有帮助,但我一直在关注将SSH支持引入Visual Studio Code for Windows:https://github.com/Microsoft/vscode/issues/13680。
gzjq41n42#
你把事情搞混了。
PuTTY和Pageant与OpenSSH工具不兼容,不能一起通信。PuTTY不能从OpenSSH代理读取密钥,OpenSSH不能从Pageant读取密钥。密钥格式也不同。这是一件坏事,但没有解决方案。
此外,“代理转发”与“使用代理”不同。
如果你用plink设置了Git(确保你真的这么做了),检查你的Pageant是否正在运行,以及在PuTTY中的 Connection → SSH → Auth 下你存储的配置文件中是否选中了“Attempt authentication using Pageant”选项。
如果它不能解决你的问题,从PuTTY发布一些调试日志。
pkln4tw63#
在ssh中使用Bitbucket不需要PuTTY: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文档的步骤3所示):字符串
(You也可以使用“
/C/path/to/bitbucket_rsa
“。这允许使用像
bitbucket.org:user/repo
这样的SSH URL。用ssh -Tv bitbucket.org
测试它(当然,在将公钥添加到Bitbucket帐户之后)。注意:
ssh-agent
仅在私钥受密码保护时才需要。两年后的2018年更新:“Say Farewell to PuTTY as Microsoft adds an OpenSSH Client to Windows 10“。现在真的是时候把油灰扔到一边了:不需要不同的(ppk)密钥格式和专有解决方案,现在OpenSSH正式作为Windows功能发布(目前处于测试版,2018年第一季度)。
ux6nzvsh4#
对于未来的谷歌人来说,
就像@CTS_AE说的那样,或者你可以在提升的powershell中运行它
字符串
您需要重新启动shell。
要设置立即在当前PowerShell示例中尝试而不重新启动:
型
z4iuyo4d5#
要从Git Bash访问SSH密钥,可以使用this program。安装过程在链接页面中描述。Git Bash是Windows上Git附带的。
dfty9e196#
我使用Git Bash for Windows 7的工作原理:将.pkk文件转换为OpenSSH格式:
https://www.simplified.guide/putty/convert-ppk-to-ssh-key
在Git Bash中将生成的key添加到
IdentityFile .ssh/config
中,例如:字符串
kokeuurv7#
确保您已经使用ssh url和http url克隆了存储库
要检查,请使用
git origin --remote -v
如果远程URL是如下所示的HTTP URL,
字符串
使用
git remote set-url origin
命令更改远程url,例如:型