Git SSH不会在自定义端口上连接

时间:2014-12-11 19:30:46

标签: windows git powershell ssh git-bash

我正在安装了msysgit,git Bash,tortoisegit和posh-git的Windows 7机器上运行。

我们公司有一个以前在https上运行的git服务器。然后,有一段时间它同时有https和ssh。现在它只有ssh。在https上,一切都没有问题。

我生成并安装了所有密钥而没有任何问题。我可以毫无问题地推/拉/通过tortoisegit。但是,我不能再在git BASH或powershell + posh-git中使用命令行。我认为部分原因是因为我们不使用端口22,而是使用自定义端口来提高安全性。

请注意,以下命令中的主机名和端口号已更改,以保护无辜者。

我在尝试推/拉时遇到以下错误,但是我正在显示命令只是为了测试ssh服务器以显示ssh是问题(我相信)。如果我没有指定端口,它会找到服务器并尝试连接 - 但由于它默认为端口22,我收到错误,如下所示:

C:\gitpath\design [master]> ssh ssh://git@dev.zzz.us
ssh: connect to host dev.zzz.us port 22: Bad file number

但是,如果我确实指定了端口,则无法找到主机名:

C:\gitpath\design [master]> ssh ssh://git@dev.zzz.us:9092/
ssh.exe": Could not resolve hostname dev.zzz.us:9092/: no address associated with name

我查看了类似的帖子,他们都指出需要包含协议(ssh://)来防止此错误。正如您所看到的,即使协议到位,我也会收到此错误。我也尝试过使用和不使用结尾'/' - 结果相同。还有其他一些我缺少的语法吗?

1 个答案:

答案 0 :(得分:2)

git可以使用ssh://git@dev.zzz.us:9092/等标识符来指定 配置远程存储库时用于SSH的非标准端口。然而 远程标识符必须包含路径(我更喜欢使用绝对路径) 远程存储库,例如,

git remote add origin ssh://git@dev.zzz.us:9092/path/to/repo.git

但是,要使用ssh命令测试此类连接,请使用-p 选项以指定TCP端口号,然后user@hostname

ssh -p 9092 git@dev.zzz.us

注意:我通常使用Unix系统中的Git(不是来自Windows)和ssh 命令由 Openssh 包提供。

编辑:我刚刚在Windows框中查看并看到MSysGit也使用了Openssh 所以上面的命令工作;我没有与Powershell核实过,但不应该 是通过Bash shell运行上述命令的任何问题。