首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使用/调试Git for Windows的SSH auth

无法使用/调试Git for Windows的SSH auth
EN

Stack Overflow用户
提问于 2021-09-20 10:37:35
回答 1查看 352关注 0票数 1

我在Windows 10上使用GitExtensions,我使用GitExtensions作为我的图形用户界面。为了对各种Git存储库进行身份验证,我使用putty/pageant,并将密钥加载到其中。GitExtensions在某种程度上解决了这个问题。最近,我在https://gitlab.example.com遇到了一个Git存储库,GitExtensions在那里尝试执行git clone,并告诉我:fatal: protocol error: bad line length character: git@,我还尝试使用gitbash手动执行克隆。当我尝试手动调用git clone时,git会问我git@gitlab.example.com的密码。已加载密钥的现有选美会话将被忽略。

我不知道如何调试,也不知道问题是什么。以下是我目前的调查结果:

  • GitExtensions没有git日志记录,所以他们关于fatal: protocol error: bad line length character: git@的神秘消息没有告诉我任何信息,我也无法看到返回的全部错误。
  • Git忽略我的putty/pageant键,并一直试图在.ssh目录中查找键。
  • 如果我使用指向GIT_SSH的路径创建系统环境变量plink.exe,那么Git就会忽略它。它一直在.ssh dir中寻找密钥。
  • 当我在cmd中运行cmd时,它会打印出:GIT_SSH=C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe
  • 当我在git中运行set GIT_SSH时,它会打印出:
  • 当我在git中运行export时,它将列出变量,并列出具有正确值的GIT_BASH变量。我不知道那是什么意思。

因此,目前我有一台安装了Git的Windows机器,无法使用putty/pageant集成连接到存储库。我甚至无法看到错误,因为Git或GitExtensions都不会允许我查看错误消息,Git也不会使用我的putty/pageant SSH密钥进行身份验证。

我怀疑GitExtensions试图通过pageant.exe使用SSH密钥,但是服务器拒绝它,并使用类似git@gitlab.example.com password:和GitExtensions之类的东西进行响应,因为它不知道如何处理它。

我也不明白为什么Windows中的gitbash不使用正在运行的pageant.exe实例来获取SSH密钥。根据这个论坛上的几十个线程,应该通过简单地设置GIT_SSH环境变量来完成,但是在我的例子中没有这样做。

我该怎么做?

EN

Stack Overflow用户

发布于 2021-09-20 16:36:43

如果您的Windows是最近的Windows 10,则不再需要pagent/putty。

只需确保您的%PATH%包括用于Windows的Git附带的打包OpenSSH。

用以下方法在CMD中测试它:

代码语言:javascript
运行
复制
set PATH=C:\Program Files\Git\bin;C:\Program Files\Git\cmd;C:\Program Files\Git\usr\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\mingw64\libexec\git-core;%PATH%
where ssh
set GIT_SSH=

第二个命令应该打印C:\Program Files\Git\usr\bin\ssh.exe。第三个应该空GIT_SSH

从这个CMD,再尝试你的SSH网址。

只需输入bash,就可以从该CMD中打开bash。(保持在同一个CMD中继承您的%PATH%更改)。

如果您有旧的putty SSH密钥,则使用以下方法重新生成新的键(仍然来自该CMD):

代码语言:javascript
运行
复制
ssh-keygen -t rsa -P "" -f ~/.ssh/myKey1

然后在~/.ssh/config

主机myRepo1主机名/url/to/repo1用户git IdentityFile ~/..ssh/myKey1 1

用以下方法进行测试:

代码语言:javascript
运行
复制
git ls-remote myRepo1

然后检查GitExtension文档"Remotes/ OpenSSH和github“,尝试使用OpenSSH而不是putty键。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69253031

复制
相关文章

相似问题

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