如何在 GitHub Desktop 中使用 SSH 远程?

Posted

技术标签:

【中文标题】如何在 GitHub Desktop 中使用 SSH 远程?【英文标题】:How can I use SSH remotes with GitHub Desktop? 【发布时间】:2019-11-21 09:41:34 【问题描述】:

我在 Windows 10 上使用 GitHub Desktop。我最初使用其 HTTPS URL 克隆了一个 repo,但现在我们的组织建议我们必须改用 SSH URL。所以我改变了这个。

我还将我的公共 SSH 密钥 (id_rsa.pub) 的内容复制到我的 GitHub 帐户中。我的 SSH 密钥受密码保护。

现在,当我尝试在 GitHub Desktop 中进行同步时,出现以下错误:

在 Git Bash 中它可以正常工作(尽管在每次拉/推之前它都会询问我的密码)。知道我需要做什么才能完成这项工作吗?

【问题讨论】:

下面我的回答有什么遗漏吗? 我已经改变了我的答案,包括一个使用 OpenSSH 的答案:你能检查一下这是否更好吗? 【参考方案1】:

正如最近在“Permission failure cloning in Git in Windows”中看到的,尝试在以下时间启动 GitHub Desktop:

git config --global core.sshCommand "'C:\Windows\System32\OpenSSH\ssh.exe'"

这将确保 GitHub Desktop 使用正确的 OpenSSH ssh.exe,而不是内部的,如 desktop/desktop issue 5641 所示。

【讨论】:

对我不起作用。在此之前,至少 git bash 是有效的。 @DarkMath 好的,您使用的是什么版本的 Windows 和 Git?你可以用git config --global unset core.sshCommand取消它【参考方案2】:

我能够通过创建一个 ssh 配置文件来使其工作,该文件的内容类似于此 gist 中提供的内容:

https://gist.github.com/JoaquimLey/e6049a12c8fd2923611802384cd2fb4a

我需要让它工作的最少内容是

Host github.com
    IdentityFile /c/Users/username/.ssh/id_github

在克隆存储库时,我必须使用 URL 选项,因为 Github.com 选项卡将使用 HTTPS url。

【讨论】:

【参考方案3】:

在搜索并尝试使用 ssh-agent 失败后,我发现如果您使用 git bash shell 启动 github 桌面,它会提示您输入密码。我为我的 .bash_profile 添加了一个别名,以便轻松启动 github 桌面。

eval C:/Users/labrat/AppData/Local/GitHubDesktop/GitHubDesktop.exe

我的 git core.sshCommand 也设置为这个,它适用于 git bash 和 github 桌面:

git config core.sshCommand "'C:\\Program Files\\Git\\usr\\bin\\ssh.exe' -i C:/Home/.ssh/id_rsa_name"

【讨论】:

您在哪里找到 Windows 10 上的 .bash_profile 文件? id_rsa_name 应该是我的私人还是公共?如果这是一个愚蠢的问题,我提前道歉【参考方案4】:

我现在也遇到了这个问题。 SSH 在带有 ssh-agent 等的 git-bash 中运行良好。

但是如果你使用 TortoiseGit,对我来说最简单的方法是全局使用 TortoiseGitPlink.exe 作为 ssh 客户端,来自 TortoiseGit、git-bash 和 github 桌面:

git config --global core.sshCommand "'C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe'"

默认情况下,这将使用 Pageant 来缓存您当前会话的密码。设置后,GitHub Desktop 立即开始使用 ssh repos。

【讨论】:

以上是关于如何在 GitHub Desktop 中使用 SSH 远程?的主要内容,如果未能解决你的问题,请参考以下文章

iOS----------教你如何使用 GitHub Desktop

如何撤消放弃 GitHub Desktop 中的更改?

如何在 Github Desktop 中运行 stash?

Mac下,如何把项目托管到Github上(Github Desktop的使用)

GitHub Desktop Git

GitHub Desktop Git