我正在安装了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://)来防止此错误。正如您所看到的,即使协议到位,我也会收到此错误。我也尝试过使用和不使用结尾'/' - 结果相同。还有其他一些我缺少的语法吗?
答案 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运行上述命令的任何问题。