【问题标题】:Git with SSH on Windows在 Windows 上使用 SSH 的 Git
【发布时间】:2011-01-30 18:09:56
【问题描述】:

我已经阅读了excellent guide provided by Tim Davis,它是关于配置 Git 以在 Windows 下使用 SSH 以生成 Git 服务器以便为我的 DVCS 提供主要位置。

我正在为我的项目创建克隆。到目前为止,我已经完成了所有步骤,但我一直从 TortoiseGit 得到这个:

git.exe clone -v “ssh://Administrator@127.0.0.1:22/SSH/Home/administrator/myapp.git” “E:\GitTest\myapp”

bash: Administrator@127.0.0.1: command not found
Initialized empty Git repository in E:/GitTest/myapp/.git/
fatal: The remote end hung up unexpectedly
Success

没有任何东西被克隆。

顺便说一句:TortoisePLink 在此消息出现之前出现并问我:“login as:”(我认为此信息已在命令中给出,即:Administrator@blahblah。

我的 home 变量设置为正确的位置: 从 Git Bash shell:

echo $HOME
/c/SSH/home/Administrator

我也尝试过使用 Putty 的 plink 代替 TortoisePLink(在 Git 和 TortoiseGit 的安装中)。这次错误被缩小到:

git.exe clone -v “ssh://Administrator@127.0.0.1:22/c:/SSH/Home/administrator/myapp.git” “E:\GitTest\myapp”

Initialized empty Git repository in E:/GitTest/myapp/.git/
fatal: The remote end hung up unexpectedly

【问题讨论】:

标签: windows git ssh tortoisegit


【解决方案1】:

在偶然发现明显的答案之前,我与这个问题斗争了几个小时。我遇到的问题是我在生成密钥和使用 git 之间使用了不同的 ssh 实现。

我在命令提示符下使用 ssh-keygen 生成我的密钥,但是当我尝试“git clone ssh://...”时,我得到了与您相同的结果,提示输入密码和消息“致命: 远端意外挂断”。

通过执行 Windows 的“where”命令来确定正在使用的 ssh 窗口。

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

第二行告诉你将执行哪个确切的程序。

接下来你需要确定 git 使用的是哪个 ssh。通过以下方式查找:

C:\set GIT_SSH
GIT_SSH=C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe

现在你看到了问题。

要纠正这个问题,只需执行:

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

检查是否应用了更改:

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

现在 git 将能够使用您之前生成的密钥。

到目前为止,此修复仅适用于当前窗口。要完全修复它,您需要更改您的环境变量。

  1. 打开 Windows 资源管理器
  2. 右键单击计算机并选择属性
  3. 点击左侧的高级系统设置链接
  4. 单击环境变量...按钮
  5. 在系统变量部分选择 GIT_SSH 变量并按编辑...按钮
  6. 更新变量值。
  7. 按确定关闭所有窗口

现在您以后打开的任何命令窗口都将具有正确的设置。

希望这会有所帮助。

【讨论】:

  • 我一直在使用 git remote push/pull 在 Windows10 上运行 git-bash,直到不久前,出现错误“错误:无法生成 ssh:没有这样的文件或目录”。上面的这个答案启发了我的修复,在 git-bash 上:export GIT_SSH=/c/Program\ Files/Git/usr/bin/ssh.exe,然后git push origin 开始神奇地工作。谢谢!
  • 既然 OpenSSH 包含在 Windows 10 中,解决这个问题的答案就是告诉 git 使用 OpenSSH。默认情况下,Git 在 Windows 上使用自己捆绑的 ssh.exe。要自己修复,请使用:setx GIT_SSH C:\Windows\System32\OpenSSH\ssh.exe。要为计算机上的每个人修复,请将/M 标志传递给setx。
  • 上述过程在 2022 年适用于 Windows 10。请检查this thread 以了解如何启用OpenSSH Authentication Agent(请参阅评分最高的答案)。
【解决方案2】:

由于在搜索结果中不断出现使 git 和 github 工作在 Windows 上使用 SSH(并且因为我不需要上述指南中的任何内容),因此我添加了以下内容,简单的解决方案。

(微软表示他们正在致力于将 SSH 添加到 Visual Studio,而 GitHub for Windows 仍然不支持 SSH...)

1.我安装了“git for Windows”(包括 ssh 和 bash shell)

https://git-scm.com/download/win

2.来自包含的 bash shell(对我来说,它安装在:C:\Program Files\Git\git-bash.exe)

cd 到您希望保存存储库的根级别(例如:C:\code\github\),并且

类型:

eval $(ssh-agent -s) && ssh-add "C:\Users\YOURNAMEHERE\.ssh\github_rsa"

3. 类型:(来自 repo 的 SSH 链接)

git clone git@github.com:RepoName/Project.git

【讨论】:

  • 知道为什么必须将 ssh-agent 包装在 eval 中以使其工作吗?
  • @Fractalf 这就是它的设计方式。 ssh-agent -s 生成 shell 代码,eval "$(ssh-agent -s)" 运行生成的代码。
  • 这是唯一对我有用的解决方案,Windows 上用于克隆的所有其他内容都说使用 https:// 格式,而这些格式从不使用密钥身份验证。谢谢!
【解决方案3】:

您在这里使用的是智能引用 “ 而不是 ":

git.exe clone -v “ssh://
                ^^^ 

确保使用普通旧双引号。

【讨论】:

    【解决方案4】:

    我在“C:/Program Files/Git/usr/bin”目录中找到了我的 ssh.exe

    【讨论】:

      【解决方案5】:

      如果安装了 Windows 版 Git,请运行 Git Bash shell:

        bash
      

      您可以在 Bash shell 中运行 ssh(Bash 知道 ssh 的路径)

      要知道 ssh 的确切路径,请在 Bash shell 中运行“where”命令:

        $ where ssh
      

      你得到:

        c:\Program Files\Git\usr\bin\ssh.exe
      

      【讨论】:

      • 太棒了!很有用
      【解决方案6】:

      我试图用上面的一些答案来解决我的问题,但由于某种原因它不起作用。我确实切换到使用 git 扩展,这是我遵循的步骤。

      1. 我去了Tools -> Settings -> SSH -> Other ssh client
      2. 将此值设置为C:\Program Files\Git\usr\bin\ssh.exe
      3. 申请

      我猜这个步骤和上面解释的一样。唯一的区别是我使用了 Git 扩展用户界面而不是终端。希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2016-04-10
        • 2015-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-16
        • 2016-09-25
        • 2023-01-05
        相关资源
        最近更新 更多