连接到Github时“无法生成ssh”,但ssh -T git@github.com有效吗?

时间:2012-05-13 18:42:14

标签: git version-control ssh github

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

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

$ git clone git@github.com: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 git@github.com
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 git@github.com:XXX/AffableBean
trace: built-in: git 'clone' 'git@github.com:XXX/AffableBean'
Cloning into 'AffableBean'...
trace: run_command: 'Plink.exe' '-batch' 'git@github.com' 'git-upload-pack '\''XXX/AffableBean'\'''
error: cannot spawn Plink.exe: No such file or directory
fatal: unable to fork

11 个答案:

答案 0 :(得分:9)

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

  

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

在git bash中工作。

答案 1 :(得分:5)

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

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

答案 2 :(得分:5)

None of the answers so far worked for me. What ended up fixing this issue for me was removing quotes from my GIT_SSH variable and don't escape any characters at all, no MSYS path style (eg. /c/path\ to\ putty/plink.exe). Just enter the path normally, Git handles the quoting.

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

That's it. When using GIT_TRACE you can see that the variable gets quoted in the resulting command so:

  1. the added double quotes change the string passed to the command and

  2. the path is wrapped in single quotes so the spaces are ok.

Hope that helps someone.

答案 3 :(得分:2)

这实在令人尴尬,但真正的问题在于我的防火墙Comodo Firewall以某种方式阻止了ssh连接被git初始化。

我可以毫无问题地通过ssh连接,例如使用命令行或Putty但不知怎的Comodo引起了这个奇怪的问题。

感谢大家的支持!

答案 4 :(得分: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

答案 5 :(得分:1)

除非您有一些模糊的反病毒互动,否则唯一的另一种情况(您所指的issue 313旁边)会看到此错误消息:

error: cannot spawn git: No such file or directory

  

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

答案 6 :(得分:1)

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

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

where ssh

为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。我希望这会有所帮助。

答案 7 :(得分:0)

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

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

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

要在每次运行git bash时使其持久化,只需在.bashrc文件中添加您的主目录:

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

答案 8 :(得分:0)

我经常收到错误

  

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

执行git pushgit pull时。我通过进入.git / config文件并更改

解决了这个问题

url = git@github.com:<USER>/<REPO>.git

url = https://github.com/<USER>/<REPO>

希望这有帮助!

答案 9 :(得分:0)

对于发现此帖子但有类似以下错误消息的任何人(权限被拒绝):

error: cannot spawn C:\Program Files\OpenSSH\: Permission denied
fatal: unable to fork

就我而言,错误是 GIT_SSH 指向目录 C:\Program Files\OpenSSH\ 而不是文件 C:\Program Files\OpenSSH\ssh.exe 。修复此问题后,git 在 PowerShell 和 bash 中均可使用。

答案 10 :(得分:0)

如果您使用的是 Windows PowerShell,请尝试将正确的路径设置为 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.2.0</version> <executions> <execution> <?m2e ignore?> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> ...{your configuration} ... </configuration> </execution> </executions> </plugin> 。就我而言:

GIT_SSH