当前位置: 首页 > 知识库问答 >
问题:

Git Bash和Pageant没有使用密钥

袁炳
2023-03-14

我已经安装了 Git for Windows(为 MinTTY 和 PuTTY\plink.exe 配置)和 PuTTY,我正在尝试让它与 Bitbucket 存储库一起使用。我已经在选美大赛和网站上加载了我的 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-vhg@bitbucket.org时,它使用id_rsa,但~/. ssh中没有我的其他键。尝试使用ssh-add~/. ssh/bitbucket_rsa会导致:

Could not open a connection to your authentication agent.

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

我已经运行了ps来检查哪些应用程序正在运行,ssh-Agent不在其中。运行


共有3个答案

楚嘉胜
2023-03-14
匿名用户

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

确保在当前shell会话中,您已将HOME设置为%USERPROFILE%Portable leGit-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”。)

这允许使用SSH的URL,如bitbucket.org: user/reso。使用ssh-Tvbitbucket.org测试它(当然是在将公钥添加到比特桶帐户之后)。

注意:只有当您的私钥受密码保护时,才需要< code>ssh-agent。

两年后更新2018:“告别PuTTY,因为微软向Windows 10添加了OpenSSH客户端”。现在真的是时候抛弃腻子了:不需要不同的(ppk)密钥格式和专有解决方案,现在OpenSSH正式作为Windows功能分发(目前测试版,2018年第一季度)。

冀耀
2023-03-14

你把事情搞混了。

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

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

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

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

李奕
2023-03-14
匿名用户

这就是最终对我起作用的原因。

顺便说一句,我也有Windows上的Bash,但我不认为这有什么关系。

我安装了Sourcetree,并用plink.exeputtygen.exe指向它的文件夹,

>

  • 在Windows 10搜索栏中键入环境。否则,打开系统属性/高级系统设置并找到环境变量
  • 添加新的系统变量
    • 变量名称:GIT_SSH
    • 变量值:<code>plink的完整路径。exe</code>文件(您可能在同一文件夹中也有<code>pageant.exe</code>和<code>puttygen.exe</ccode>)。
      • 我的是:C:\Program Files(x86)\Atlassian\SourceTree\tools\putt\plink.exe

        注意:较新版本的Sourcetree似乎安装了ot %localappdata%。这些工具位于< code > % local appdata % \ source tree \ app-x . x . x \ tools \ putty 中

        注意:较新的source tree(Windows上的v2)使用版本化的目录,所以每次你更新它,你都必须更新它,这是一个痛苦。最好只制作一份< code>plink.exe的副本,并将其放在不会改变的地方。

        如果您正在运行上述任何程序,您可以随时打开任务管理器,找到进程,并打开文件夹位置以获取plink.exe的路径。

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

        鉴于我已经安装了Sourcetree,我能够使用它的接口从Bituck中克隆出来并通过它的接口推送,但是尝试通过终端是不起作用的,因为它们使用了不同的凭据集。

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

        • ssh布局: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中,但对我来说感觉更安全,更便携。

        您可能需要将密钥添加到钥匙串中,特别是如果您使用的是 Visual Studio Code 并且密钥上有密码短语(目前 Visual Studio Code 不允许您键入密码短语)。

        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

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

        • https://github.com/PowerShell/openssh-portable
        • https://github.com/rupor-github/ssh-agent-wsl

  •  类似资料:
    • Gitbash 是一个 bash 工具集,对 git 的常用子命令做了一系列别名处理。不用再输入类似 `git clone http://.....` 的命令直接进行 'clone http://...' 就可以,省掉了 git 主命令的输入。  对于 commit , checkout 等常用子命令,也采取了 svn 的缩写方式,直接输入 co 和 ci 就能完成 git checkout 和

    • 我试图scp使用2 linux服务器之间的密钥对。我想跟着http://sthen.blogspot.in/2008/03/sftp-i-java-with-jsch-using-private-key.html 我能够在linux服务器之间创建scp文件,但当我执行代码时,会收到错误com。jcraft。jsch。JSchException:UnknownHostKey。知道我做错了什么吗。 过

    • 我目前需要一种使用AES-128对称加密对字符串加密和字节数组解密的方法,使用C#。我找不到办法,但也许我错过了什么。

    • 我是拉威尔的新手,我正在尝试使用Artisan命令。。。 它显示。。。 Laravel开发服务器已启动:http://127.0.0.1:8000 但是,当我手动输入时,它不会自动启动http://127.0.0.1:8000 它显示了这个错误: RuntimeException未指定应用程序加密密钥。 有什么想法吗?我正在使用Laravel framework 5.5-dev。

    • 因此,我们已经开始使用Azure Key Vault作为机密,但看起来像是以Azure应用服务运行的应用程序必须在门户中对应用程序设置值进行硬编码。有没有办法让应用服务中的应用程序设置从Key Vault中提取?

    • 我对使用bouncy-gpg和PCKS12密钥的加密和描述的实现有麻烦。现在我有了PCKS12密钥(扩展名:.p12)。从这个密钥,我能够获得公钥和私钥。否则,bouncy-gpg需要使用gpg密钥。如何在bouncy-gpg中使用p12文件?如果有任何建议,我将不胜感激。多谢了。