gpt4 book ai didi

来自 WSL 的 git ssh 无法连接到我们公司的私有(private)内部 git 主机

转载 作者:行者123 更新时间:2023-12-05 05:53:13 25 4
gpt4 key购买 nike

我正在尝试设置我的 PC,以便我可以从 WSL 中提交到我们公司的内部 github 等效项,这样我就可以避免在必须关闭 WSL VS Code 以从 Windows 推送时失去焦点。服务器端和WSL中的rsa_key设置正确(包括600权限)

如果我在 Windows 中的 gitbash 中运行以下命令:

ssh -p [default port for that site] myusername@[our_internal_git_host]

它连接成功,但如果我在 WSL(WSL 1,Ubuntu)中运行相同的命令,我会得到

ssh: Could not resolve hostname

但是如果我尝试以下作为来自 wsl 的测试:

ssh git@github.com

它能够连接并询问我有关 RSA key 的信息,因此我的 Windows 防火墙(顺便说一下,我无权配置它)并没有完全阻止 ssh 从 WSL 访问

这向我表明,要么是内部 git 主机站点上的某些安全设置我无能为力,要么更可能是端口转发问题。

为了测试我是否正确,使用 ssh 命令,我必须使用类似 ssh -L 标志的东西,以便它使用允许 SSH 连接到公共(public) github 的 WSL 传出端口,然后使用[该站点的默认端口] 与其连接。

然后,作为第二步,我可能会在 WSL 中为 open-ssh、git 或两者添加一些配置文件,以使该解决方案在我尝试从 WSL 运行 git push 时生效。

顺便说一句,很抱歉对某些细节含糊不清,只是想格外小心:专有信息和安全问题。

有没有人有什么想法?

最佳答案

简单描述:

添加

[network]
generateHosts = false

到/etc/wsl.conf

许多个月后,我终于抽出时间来解决这个问题。

这是一些 DNS 功能的问题,它允许 Windows 找到我们的内部 git 主机,该主机在默认设置的 WSL 中不起作用。所以我做了以下(这是几天前的事了,当时太忙了,没时间回来马上写这个答案,但我认为这是正确的过程):

在 WSL 中(假设是 Ubuntu,可能也适用于 Debian)

用 nano 或编辑器或您的选择打开/etc/wsl.conf(可能需要 root 才能保存,最简单的方法是使用 sudo nano/etc/wsl.conf)

在启动时添加以下内容(以防止 wsl 自动将主机名添加到/etc/resolv.conf):

[network]
generateHosts = false

通过在 cmd 中运行 wsl --shutdown 重新启动 WSL,然后从终端或 VS 代码等重新启动 wsl,导航到 repo 并运行 git fetch 等以确认是否工作(显然,远程 url设置等需要正确,但如果它在 Windows 上工作,现在也应该在 WSL 上工作)

顺便说一句,我应该补充一点,虽然我的问题引用的是 SSH,但我相信我正在为我目前尝试过的所有 repo 协议(protocol)使用 https,但我想同样的解决方案也适用于 SSH,因为只要 SSH key 在 WSL 中正确配置并添加到 git 主机中即可。

(注意:此答案的早期版本还涉及从 Windows 检查默认网关并将其手动添加到/etc/resolv.conf,但在重新检查我的工作后,这实际上并不是最终修复它的方法)

关于来自 WSL 的 git ssh 无法连接到我们公司的私有(private)内部 git 主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69936623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com