【问题标题】:Configure Git to use Plink配置 Git 以使用 Plink
【发布时间】:2024-04-27 00:50:02
【问题描述】:

我正在尝试将 Git 配置为使用 Plink。它以前对我有用过很多次。现在,由于某种原因,我无法使用此选项(已禁用):

我尝试卸载并重新安装 Git 一百次。没有。我无法启用此选项。

【问题讨论】:

  • 您确定为进程正确设置了环境变量吗?您可以安装 Process Explorer 并使用它来检查已经运行的程序。
  • 我没有设置变量的选项
  • 那张截图显示了什么?有人可以拿一个新的或用文字描述吗?
  • 我问这个已经两年多了,但我认为这张图片与 jhcaiced 发布的图片相同。我只是展示了我的安装没有展示的内容。

标签: git msysgit plink


【解决方案1】:

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

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

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

【讨论】:

  • 工作正常并且(假设您知道在哪里设置环境变量)比重新安装要容易得多。
  • 路径中的空格仍然是个问题。一种解决方法是使用不包含空格的短文件名。可以使用以下命令获取短文件名:cmd /c for %A in ("c:\Path\ to\ file") do @echo %~sA.
  • @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
  • 我不得不通过输入plink github.com 来手动确认/将服务器的密钥添加到缓存中,然后按 y,然后按 Ctrl-C。克隆之后工作
【解决方案2】:

这是一个老问题,我也有同样的问题,只是为了确保我会写下对我有用的解决方案。

  • msysgit 安装程序未显示允许在 openssh 客户端和 Tortoise 之间进行选择的屏幕 (plink)

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

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

【讨论】:

  • 我需要让 Pagent 运行。
  • 这是让我进入安装程序的第二点,谢谢!
  • 对我来说,在 Win Server 2016 set GIT_SSH=C:\Program Files\PuTTY\plink.exe 上运行这个(对于 x64 putty)有效
【解决方案3】:

这看起来像issue 368

当我更新安装时,从未询问我是否要使用 PLink。
现在 Git 继续寻找 OpenSSH 密钥。 Git 找不到我的 putty 密钥。

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

这有一个解决方法 (issue 367)

1) 确保 plink 在PATH
2)保存一个腻子会话的设置(不管是哪一个)

在安装 git 之前做这些。


即使有这个过程,也不容易:

我终于能够让 GIT 与 Plink 一起工作。

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

我的解决方法:

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

通过这些更改,GIT 现在可以正常运行。


Janusz Skonieczny 添加in the comments

要快速设置此设置,请以管理员身份运行 PowerShell:

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

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

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

请参阅commit dd33e07(2017 年 2 月 1 日)和 Segev Finer (segevfiner)commit e9d9a8a(2017 年 1 月 2 日)。
commit e2824e4(2017 年 2 月 1 日)Johannes Schindelin (dscho)
请参阅 Junio C Hamano (gitster)commit 6a4f3a9(2017 年 1 月 26 日)。
(由 Junio C Hamano -- gitster -- 合并于 commit be6ab59,2017 年 2 月 27 日)

ssh.variant:

根据环境变量GIT_SSHGIT_SSH_COMMAND的值,或配置设置core.sshCommand,Git自动检测是否调整其命令行参数以用于plinktortoiseplink,而不是默认的 (OpenSSH)。

配置变量ssh.variant 可以设置为覆盖此自动检测;
有效值为sshplinkputtytortoiseplink
任何其他值都将被视为普通 ssh。
可以通过环境变量GIT_SSH_VARIANT 覆盖此设置。

【讨论】:

  • 亮点:避免plink.exe路径中的空格;将GIT_SSH指向plink。
  • 为什么您的PATH 中没有 plink? GIT_SSH=plink 对我来说很好用:-p
  • @binki 因为我有几个 plink(一个使用 putty,一个使用 GoW (github.com/bmatzelle/gow/wiki),我想确保引用我想要的那个。
  • 以管理员身份快速运行 PowerShell:[Environment]::SetEnvironmentVariable("GIT_SSH", "D:\your_path_here\plink.exe", "User")
  • @JanuszSkonieczny 好点。我已将您的评论包含在答案中以提高知名度。
【解决方案4】:

如果你使用 TortoiseGit,你可以永久配置它的 plink。当然在你的机器上使用正确的路径。

setx GIT_SSH "C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe"

【讨论】:

    【解决方案5】:

    我多年来一直使用GIT_SSH 环境变量的解决方案,但今年某个时候它停止工作(在更新 git bash 或 putty 工具包之后)。我找到了当前的工作灵魂。首先,您的选美必须正在运行。其次,你必须启动 ssh 代理,但 windows 之一:

    eval `ssh-pageant`
    

    它相当于 Windows 用户所知道的:

    eval `ssh-agent`
    

    要添加键,您可以使用ssh-add 或 Pagenant UI 窗口。

    【讨论】: