连接到Github时“无法生成ssh”,但ssh -T [email protected]有效吗?

问题描述 投票:19回答:9

我很难获得Github(+ Netbeans工作)。

我想在git(在Windows 7上)使用ssh来提交或克隆项目,但我不断收到此错误消息:

$ git clone [email protected]:USER/PROJECTNAME.git
error: cannot spawn C:\Program Files (x86)\Git\bin\ssh.exe: No such file or directory
fatal: unable to fork

注意:现在,我的GIT_SSH环境变量指向C:\Program Files (x86)\Git\bin\ssh.exe,但我也尝试了C:\Program Files (x86)\Git\bin,完全删除它,指向putty的/ plink的文件夹,并指向他们的可执行文件,但仍然是相同的消息。

当我测试连接时,一切正常:

$ ssh -T [email protected]
Hi USER! You've successfully authenticated, but GitHub does not provide shell access.

我究竟做错了什么?如果我首先在目录中执行git init会有所不同吗?

编辑:

这没有帮助:

setting GIT_SSH to plink.exe and adding plink's path to PATH

**编辑2 **

使用GIT_TRACE=2命令的结果

$ GIT_TRACE=2 git clone [email protected]:XXX/AffableBean
trace: built-in: git 'clone' '[email protected]:XXX/AffableBean'
Cloning into 'AffableBean'...
trace: run_command: 'Plink.exe' '-batch' '[email protected]' 'git-upload-pack '\''XXX/AffableBean'\'''
error: cannot spawn Plink.exe: No such file or directory
fatal: unable to fork
git version-control ssh github
9个回答
10
投票

在我的例子中,将GIT_SSH设置为:

GIT_SSH = / c / Program \ Files \(x86)/Git/bin/ssh.exe

在git bash工作。


6
投票

到目前为止,没有一个答案对我有用。最后为我解决这个问题的是从我的GIT_SSH变量中删除引号并且根本没有转义任何字符,没有MSYS路径样式(例如./c/path\ to\ putty/plink.exe)。只需正常输入路径,Git就可以处理报价。

set GIT_SSH=C:\path to putty\plink.exe

而已。使用GIT_TRACE时,您可以看到变量在结果命令中被引用,因此:

  1. 添加的双引号会更改传递给命令的字符串
  2. 路径用单引号括起来,所以空格没问题。

希望能帮助别人。


5
投票

您是否尝试将ssh.exe安装到不包含空格的路径?你测试过引用反斜杠是否有效(\\)?

你也可以试试GIT_TRACE=2 git clone <...>,它应该显示git试图连接的命令和参数。


2
投票

这真的很尴尬,但真正的问题是我的防火墙Comodo Firewall不知何故阻止ssh连接被git初始化。

我可以没有任何问题通过ssh连接,例如使用命令行或Putty,但不知何故Comodo导致这个奇怪的问题。

谢谢大家的支持!


2
投票

我认为一个路径(例如:C:\ Program Files(x86)\ Git)有空格,所以它无法识别。

解决它

  • 做一个缩短路径的简单链接 mklink / d“C:/ Git”“C:\ Program Files(x86)\ Git”

它适用于我和Jenkins(如果你使用它与Git插件)

  • 设置GIT_SSH = C:\ Git
  • 最后,将PATH设置为%GIT_SSH%\bin

2
投票

就我而言,我能够通过在CMD终端中创建目录连接并重置GIT_SSH来解决该问题。

通过在Git Bash终端中运行此Windows CMD命令来查找ssh命令的路径。

$ where ssh
C:\Program Files\Git\usr\bin\ssh.exe

为CMD终端中的原始Git目录创建一个没有空格的联结。

mklink /J \git "\Program Files\Git"

然后编辑GIT_SSH环境变量以使用该联结。对于Windows 7,控制面板>系统和安全>系统>高级系统设置。

C:\git\usr\bin\ssh.exe

在将PuTTY用法切换到OpenSSH后,我以某种方式遇到了这个问题。 git版本是2.21.0.windows.1。我希望这有帮助。


1
投票

除非你有一些模糊的反病毒互动,否则唯一的另一种情况(你指的是issue 313除外)会出现此错误信息:

“Qazxswpoi”

如果你得到这个错误“error: cannot spawn git: No such file or directory”这是一个非常讨厌的问题。 我花了一天的时间来跟踪它,但它归结为如果你在存储库中有超过500个标签它必须炸毁一些内部命令行限制。 TLDR:如果您收到此错误,请删除一堆标签。


0
投票

在我的Windows 7默认ms git bash安装我需要将GIT_SSH设置为:

error: cannot spawn git: No such file or directory

所以只需找到Git安装提供的ssh.exe,并用正确的dir更新上面的内容。

为了在每次运行git bash时使这个持久化,只需在.bashrc文件中添加你的主目录:

"C:\\Program Files (x86)\\Git\\bin\\ssh.exe"

0
投票

我经常收到错误

错误:无法生成“C:\ Plink.exe”:没有这样的文件或目录致命:无法分叉

在做export GIT_SSH="C:\\Program Files (x86)\\Git\\bin\\ssh.exe" git push时。我通过进入.git / config文件并进行更改来解决它

git pull

url = [email protected]:<USER>/<REPO>.git

希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.