[英]Git Bash and Pageant are not using keys
我已经安装了适用于 Windows 的 Git(为 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 hg@bitbucket.org
它使用id_rsa
但我在~/.ssh
其他键都没有。 尝试使用ssh-add ~/.ssh/bitbucket_rsa
结果:
Could not open a connection to your authentication agent.
我已经阅读了关于配置 PuTTY 以允许转发的内容,但这通常是建议结束的地方,所以我只是为默认会话设置了这个选项并将其保存在那里。
我已经运行ps
来检查哪些应用程序正在运行,并且ssh-agent
不在其中。 运行eval 'ssh-agent'
启动守护进程,但没有任何区别。
这就是最终为我工作的原因。
顺便说一句,我在 Windows 上也有 Bash,但我认为这并不重要。
我安装了 Sourcetree 并用plink.exe
、 puttygen.exe
和pageant.exe
指向它的文件夹。 您也可以单独下载和安装这些。
Environment
到Windows 10的搜索栏。 否则,打开系统属性/高级系统设置并找到您的环境变量。plink.exe
文件的完整路径(您可能还有pageant.exe
和puttygen.exe
在同一文件夹中)。
我的是: C:\\Program Files (x86)\\Atlassian\\SourceTree\\tools\\putty\\plink.exe
注意:较新版本的 Sourcetree 似乎安装了%localappdata%
。 工具位于%localappdata%\\SourceTree\\app-xxx\\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 存储库的概览中获取以下值。
git@bitbucket.org:USERNAME/REPO_NAME.git
https://USERNAME@bitbucket.org/USERNAME/REPO_NAME.git
我注意到在 Windows 10 上使用 HTTPS 时,它将使用 Windows 凭据管理器(我尝试将我的凭据添加到它,同时试图自己解决这个问题,但我仍在使用 SSH,所以没关系)当你去交互时使用远程存储库,它会提示您输入凭据并将其存储以供以后在 Windows 凭据管理器中使用:)
希望其中一种方法对您有用。 HTTPS 方法将跳过整个 SSH 密钥生成并将其推送到 Bitbucket,但对我来说感觉更安全和便携。
您可能需要将您的密钥添加到钥匙串中,特别是如果您使用的是 Visual Studio Code 并且您的密钥上有密码(目前 Visual Studio Code 不允许您输入密码)。
ssh-add -K ~/.ssh/id_rsa
我不确定这些是否对某人有帮助,但我一直在关注将 SSH 支持纳入 Visual Studio Code for Windows: https : //github.com/Microsoft/vscode/issues/13680 。
你把事情搞混了。
PuTTY 和 Pageant 与 OpenSSH 工具不兼容,无法一起通信。 PuTTY 无法从 OpenSSH 代理读取密钥,OpenSSH 无法从 Pageant 读取密钥。 密钥格式也不同。 这在这个世界上是件坏事,但在地平线上没有解决方案。
“代理转发”也不同于“使用代理”。
如果您使用 plink 设置 Git(确保您确实设置了),请检查您的 Pageant 是否正在运行,以及是否在连接→ SSH → Auth下的 PuTTY 中存储的配置文件中选中了“尝试使用 Pageant 进行身份验证”选项。
如果它不能解决您的问题,请从 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 文档的第 3 步):
Host bitbucket.org
IdentityFile ~/.ssh/bitbucket_rsa
(您也可以使用“ /C/path/to/bitbucket_rsa
”。)
这允许使用像bitbucket.org:user/repo
这样的 SSH URL。 使用ssh -Tv bitbucket.org
测试(当然,在将您的公钥添加到您的 Bitbucket 帐户之后)。
注意:仅当您的私钥受密码保护时才需要ssh-agent
。
两年后的 2018 年更新:“ 告别 PuTTY,因为 Microsoft 向 Windows 10 添加了 OpenSSH 客户端”。 现在是抛弃腻子的时候了:现在不需要不同的 (ppk) 密钥格式和专有解决方案,现在OpenSSH作为 Windows 功能正式分发(目前处于测试阶段,2018 年第一季度)。
要从 Windows 上的 Git 附带的 Git Bash 访问 Pegeant 中加载的 SSH 密钥,您可以使用此程序。 链接页面上描述了安装过程。
Windows 7 的 Git Bash 对我有用:将 .pkk 文件转换为 OpenSSH 格式:
在 Git Bash IdentityFile .ssh/config
生成的密钥添加到IdentityFile .ssh/config
,例如:
Host repository
# My converted OpenSSH key
IdentityFile /c/Users/me/open-ssh.pri
# This repository server uses a specific name, not usually needed.
User git
# This repository server uses a specific port, not usually needed
Port 8322
# Repository server full name
Hostname repo.server.com
对于未来的谷歌员工,
就像@CTS_AE所说的那样做,或者您可以在提升的powershell中运行它
[Environment]::SetEnvironmentVariable("GIT_SSH", "C:\Program Files\PuTTY\plink.exe", "Machine")
确保您已使用 ssh url 而非 http url 克隆了您的存储库
要检查,请使用git origin --remote -v
如果远程 url 是如下的 http url
origin https://username@example.com/username/repo.git
使用git remote set-url origin
命令更改远程 url,例如:
git remote set-url origin git@example.com:username/repo.git
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.