【问题标题】:Puttygen RSA keys work with command line git on windowsPuttygen RSA 密钥在 Windows 上与命令行 git 一起使用
【发布时间】:2012-05-17 20:46:28
【问题描述】:

问题:当我尝试使用 puttygen 生成的 ssh2-RSA 密钥和命令行 git 工具时,密钥被拒绝。

详细信息:我的计算机上安装了 TortoiseGit(以及 msysgit)。 TortoiseGit 设置为使用 PuttyGen 生成它的密钥。当我尝试在命令行 git 工具中使用 PuttyGen 生成的密钥之一时,它会拒绝公钥,并且在某些情况下会要求输入密码,即使密钥没有。我在多台计算机(所有运行 Windows 7 x64)上都遇到过这个问题,知道如何解决这个问题,所以我不必为我的 cmd 行客户端和 TortoiseGit 分别设置密钥?

TortoiseGit 设置为从推送对话框中为每个 repo 自动加载一个 putty 键也可能很有趣。当我运行 ssh -v git@github.com 时,它正确找到了密钥,但是当它尝试连接时,它被拒绝说密钥错误。如果我使用 ssh-keygen 制作的密钥,它就可以正常工作。

软件版本: MsysGit 1.7.7.1 SSH 4.6p1 腻子根 0.61 乌龟 1.7.5.0

感谢您的帮助(如果这是错误的交易所,请告诉我,以便我可以关闭并快速移动它) 埃里克·福德

【问题讨论】:

标签: git putty ssh-keys openssh tortoisegit


【解决方案1】:

this one 的副本。简而言之:PuTTY(puttygen 是其中的一部分)和 OpenSSH(ssh-keygen 是其中的一部分)使用不同的格式来存储其密钥,您必须坚持使用其中一种或执行转换。

就个人而言,我已将 Git 设置为使用 plink.exe 作为其 SSH 代理,并通过 pageant 程序(即 PuTTY 的 ssh-agent)提供密钥。

说得更清楚一点:Windows 版 Git 捆绑了 OpenSSH,但它并没有与之绑定,如果被告知这样做,它可以愉快地使用 PuTTY。每个人都可以在这里选择他们的选择。我认为如果系统中安装了 PuTTY 或被其他工具使用(看起来像你的情况),那么让 Git 使用 PuTTY 是一个自然的选择。

【讨论】:

  • 在使用 PuTTY 和 Git for Windows 时有一个(严重)警告:当第一次连接到尚未看到的主机时,它会要求用户接受该主机的密钥指纹——请参阅 @987654322 @。解决方案是首先使用 PuTTY 手动连接到该主机(通过其 GUI 客户端或运行 plink.exe
  • 这个重复的问题似乎没有解释 如何 将 Git 设置为使用 plink.exe 作为其 SSH 代理。请问您有什么指点吗? :)
  • @OwenBlacker,当然——关注this guide。另外请不要混淆这些术语:plink.exe 是一个 SSH 客户端,它可能(或可能不会——但默认情况下会这样做)联系正在运行的 SSH 代理 这是由 PuTTY 套件中名为 pageant.exe 的程序实现的。
  • @OwenBlacker,SSH 代理的整个想法是缓存解密的 SSH 密钥,首先要求您输入密码来解密您向代理提供的每个密钥。然后 SSH 客户端尝试联系代理并询问它必须尝试在服务器上对其进行身份验证的密钥。这样,您只需在每个登录会话中输入每个 SSH 密钥的密码短语一次(或者更确切地说,在每个代理运行时输入一次)。
  • @OwenBlacker,请注意一点。我提到的指南。如果在注册表中找到由 PuTTY 维护的保存的 SSH 会话,Windows 安装程序的 Git 只会向您显示选择首选 SSH 客户端的页面。所以如果你没有,你将没有机会在安装程序中选择plink.exe。如果是这种情况,只需添加一个环境变量 GIT_SSH 并将其设置为 plink.exe 二进制文件的完整路径名。
猜你喜欢
  • 2018-04-13
  • 1970-01-01
  • 2016-11-05
  • 1970-01-01
  • 2011-01-23
  • 2020-10-23
  • 2018-03-04
相关资源
最近更新 更多