配置Git使用Plink

50

我正在尝试配置Git使用Plink。以前我做过很多次。现在,由于某些原因,我无法使用这个选项(它被禁用了):

Git Setup Plink option screenshot

我尝试过一百次卸载和重新安装Git。但是没有效果,我无法启用此选项。


你确定环境变量对进程设置正确吗?你可以安装Process Explorer并使用它来检查已经运行的程序。 - TerryP
我没有设置变量的选项。 - Terminal58
2
那个截图显示了什么?有人可以重新截一张或用文字描述一下吗? - SamB
已经过去两年多了,我问过这个问题,但我认为这张图片与jhcaiced发布的那张完全相同。我只是想展示我的安装没有显示给我看的内容。 - Terminal58
6个回答

66

我遇到了这个问题(在较新版本的Git,1.7.9)。我使用了VonC的答案,但只需要几个步骤:

  1. 将环境变量GIT_SSH设置为plink.exe的位置
  2. 运行pageant.exe并加载您的私钥

在64位Windows上,plink的默认位置是C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe。路径中的空格似乎不再是问题。


工作得很好,假设你知道在哪里设置环境变量,这比重新安装要容易得多。 - amenthes
路径中的空格仍然是一个问题。解决方法是使用不包含空格的短文件名。可以使用以下命令获取短文件名:cmd /c for %A in ("c:\Path\ to\ file") do @echo %~sA - neverov
1
@neverov 我通过创建链接解决了空格问题。 c:\ apps是我PC上的预先存在的目录,您可以将其替换为任何您喜欢的目录。 以管理员身份执行以下操作 mklink /j /d c:\apps\putty "c:\Program Files (x86)\PuTTY" 普通用户执行 set GIT_SSH=c:\apps\putty\plink.exe 为了测试ssh身份验证,我使用了 c:\apps\putty\plink -v git@github.com - carl verbiest
我必须手动确认/添加服务器的密钥到缓存中,方法是输入plink github.com,然后按y和Ctrl-C。之后克隆操作就可以正常工作了。 - Konrads

51

这是一个老问题,我也遇到了同样的问题,为了确保,我将写下对我有效的解决方案。

  • msysgit安装程序没有显示允许选择openssh客户端和Tortoise(plink)之间的屏幕。

  • 解决方案是安装Putty(或者我猜Tortoise Plink),创建并保存至少一个会话,仅安装Putty是不起作用的,必须创建会话,安装程序会进行一些奇怪的检查。

  • 当你再次运行Git安装程序时,该屏幕应该出现。

输入图像描述


2
我需要运行Pagent。 - Nigel Thorne
1
是第二个点让我在安装程序中迈出了那一步,谢谢! - jwanglof
对我来说,在Win Server 2016上运行这个(对于x64的putty)是有效的。set GIT_SSH=C:\Program Files\PuTTY\plink.exe - m1m1k

22

看起来像问题368

当我更新时,安装程序没有询问是否要使用PLink。
现在Git继续寻找OpenSSH密钥。 Git无法找到我的putty密钥。

我尝试加载我的putty私钥并重新安装Git。不管我做什么,我都无法让Git使用我的putty plink数据和私钥。

这里有一个解决方法(问题367

1)确保plink在PATH
2)保存任意一个putty会话的设置(无论是哪一个)

并在安装Git之前执行这些操作。


即使采用了该过程,也不容易:

我最终成功让GIT与Plink一起工作了。

一个评论:
我在安装GIT之前启动了一个Plink会话。即使有一个Plink会话在运行,我也无法让安装程序识别Plink正在运行。

我的解决方法:

  1. 我最终只安装了GIT 1.6.5.1。
  2. 更改Plink路径以去除空格。 把目录从:c:\program files\putty 改为 c:\putty
  3. 设置环境变量GIT_SSH为新路径:c:\putty\plink.exe

通过这些更改,GIT现在正常工作。


Janusz Skonieczny评论中补充说

要快速设置,请作为管理员运行PowerShell:

[Environment]::SetEnvironmentVariable("GIT_SSH", "D:\your_path_here\plink.exe", "User")

2017年3月更新,适用于Git 2.13(2017年第二季度)

现在Git可以自动检测所需的ssh(openssh或plink),但您可以使用ss.variant强制进行检测。

请参见提交dd33e07(2017年2月1日)和提交e9d9a8a(2017年1月2日),作者为Segev Finer(segevfiner.
请参阅提交e2824e4(2017年2月1日),作者为Johannes Schindelin(dscho.
请参阅提交6a4f3a9(2017年1月26日),作者为Junio C Hamano(gitster.
(由Junio C Hamano -- gitster --提交be6ab59合并,2017年2月27日)

ssh.variant:
根据环境变量 `GIT_SSH` 或 `GIT_SSH_COMMAND` 的值,或配置设置 `core.sshCommand`,Git 会自动检测是否需要调整其命令行参数以使用 `plink` 或 `tortoiseplink`,而不是默认的 OpenSSH。可以通过设置配置变量 `ssh.variant` 来覆盖此自动检测;有效值为 `ssh`、`plink`、`putty` 或 `tortoiseplink`。任何其他值都将被视为普通的 ssh。此设置可以通过环境变量 `GIT_SSH_VARIANT` 覆盖。

10
重点:在“plink.exe”路径中避免使用空格;将“GIT_SSH”指向“plink”。 - SamB
为什么你的PATH中没有plink?对我来说,GIT_SSH=plink很好用 :-p - binki
@binki 因为我有几个 plink(一个用 putty,一个用 GoW(https://github.com/bmatzelle/gow/wiki),我想确保引用我想要的那个。 - VonC
要快速设置,请以管理员身份运行PowerShell:[Environment]::SetEnvironmentVariable("GIT_SSH", "D:\your_path_here\plink.exe", "User") - Janusz Skonieczny
@JanuszSkonieczny 很好的观点。我已经将您的评论包含在答案中以增加可见性。 - VonC

2
如果您正在使用TortoiseGit,您可以永久配置其plink。当然,在您的计算机上使用正确的路径。
setx GIT_SSH "C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe"

1

我多年来一直使用 GIT_SSH 环境变量的解决方案,但在今年某个时候它停止工作了(可能是 git bash 或 putty 工具包更新后)。我找到了当前的有效解决方案。首先,你必须运行 pageant。其次,你必须启动 ssh 代理,但是要使用 Windows 自带的代理:

eval `ssh-pageant`

这是Windows中与Unix用户所知相当的等价物:
eval `ssh-agent`

为了添加密钥,你可以使用ssh-add或Pagenant UI窗口。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接