【发布时间】:2021-09-15 14:46:29
【问题描述】:
我正在使用 Windows 10,我正在尝试通过 ssh 将 git 与 gitlab 的 selfhosted(corporate) 实例连接起来。
我尝试按照这里的指南https://docs.gitlab.com/ee/ssh/。我正处于ssh -Tv git@corpo.gitlab 正确将我登录到实例的阶段,但是当我尝试执行git fetch gitlab 时,ssh 连接失败。
我尝试比较独立 ssh 调用和 git 调用 ssh 的调试输出,我发现在“git”变体中,甚至没有尝试使用我的私钥。日志说它在正确的用户目录中查找(因此它不是“用户范围”问题)。
为什么会发生这种情况?我已通过git remote gitlab git@corp.gitlab 将远程添加到 git 存储库。
设置正确的 ssh config 文件
Host ssh.corpo.gitlab
HostName ssh.corpo.gitlab
IdentityFile ~/.ssh/my_corpo_key
解决了这个问题,但我认为它应该在没有这些额外设置的情况下工作。有什么不同?
【问题讨论】:
-
Windows 带有自己的
ssh,而Git-for-Windows 带有其 自己的ssh。这两个实现可能无法正确地相互通信。你可以让 Git 使用 Windows ssh,虽然我不知道这样做的正确方法是什么。 -
你说得非常正确,我刚刚检查了 windows 使用 OpenSSH_for_Windows8 + LibreSSL 而 git 调用 OpenSSH8 + Openssl。正在使用不同的二进制文件,因此我只在“windows”实例中添加了“default”键。这实际上解释了(回答)我的问题。
-
@torek
set GIT_SSH,例如 -
@phd 这与设置
GIT_SSH_COMMAND或core.sshCommand相比如何? (特别是,Windows 用户和/或生态系统是否有自己的用于特殊目的的环境变量覆盖?) -
@torek
GIT_SSH必须指向二进制文件(或脚本)并且不接受参数。GIT_SSH_COMMAND允许复杂的命令行。我不认为 Git-for-Windows 有自己的环境变量。