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

Pat*_*ryk 18 git ssh version-control 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
Run Code Online (Sandbox Code Playgroud)

注意:现在,我的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.
Run Code Online (Sandbox Code Playgroud)

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

编辑:

这没有帮助:

设置GIT_SSHplink.exe并加入砰砰的路径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
Run Code Online (Sandbox Code Playgroud)

sch*_*tbi 9

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

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

在git bash工作.


cgc*_*man 8

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

set GIT_SSH=C:\path to putty\plink.exe
Run Code Online (Sandbox Code Playgroud)

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

  1. 添加的双引号会更改传递给命令的字符串

  2. 路径用单引号括起来,所以空格没问题.

希望能帮助别人.

  • 重要提示:请注意,如果您明确尝试使用 Windows 的内部、本机 OpenSSH 功能(自 Windows 10 1803 起可用),则这是不正确的。在这种情况下,正确的引用将是: C:\Windows\SysNative\OpenSSH\ssh.exe 此外,如果您尝试将内容与 Visual Studio 2022 集成,则在 %UserProfile%/.gitconfig 中指定此内容的正确方法,严格、准确、精确地是这样的: [core] sshcommand = '"C:\\Windows\\SysNative\\OpenSSH\\ssh.exe"' 请注意双引号周围的单引号和“SysNative”。 (4认同)

use*_*062 5

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

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


yos*_*y27 5

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

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

$ where ssh
C:\Program Files\Git\usr\bin\ssh.exe
Run Code Online (Sandbox Code Playgroud)

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

mklink /J \git "\Program Files\Git"
Run Code Online (Sandbox Code Playgroud)

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

C:\git\usr\bin\ssh.exe
Run Code Online (Sandbox Code Playgroud)

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


Pat*_*ryk 2

这真的很尴尬,但真正的问题是我的防火墙Comodo Firewall,它以某种方式阻止了 ssh 连接初始化git

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

感谢大家的支持!