为Git指定SSH端口


18

我连接到的大多数服务器都使用非标准的ssh端口(1234)。所以在我的ssh配置文件中,我有:

Port 1234

但是github.com使用端口22。当我尝试连接到github时,它显然尝试使用端口1234。现在,我必须编辑ssh配置才能正常工作。

这是我的git config中的代码片段:

[remote "origin"]
        url = git@github.com:asdf/asdf.git

Answers:


27

看看如何正确设置〜/ .ssh / config文件(man 5 ssh_config)。您可以轻松为不同的主机指定不同的设置。要解决您的问题,您需要设置

Host github.com
Port 22
Host *
Port 1234

请查看ssh_config手册页,它在前几页中介绍了您需要了解的所有内容。


24

在其中设置节~/.ssh/config是一个很好的解决方案,但是了解另一种方法可能会很有用。

常见的类似scp的语法user@host:path没有端口的位置,但是Git还支持ssh:可用于指定端口的URL方案:

ssh://git@github.com:22/asdf/asdf.git

虽然一个ssh:URL支持端口说明书中,不支持相对路径(例如没有直接等同于SCP样的语法user@host:path,其中path不以斜线开头)。

GitHub对待相对路径和绝对路径相同,因此它适用于它们,但可能不适用于所有基于SSH的Git存储库。对于基于SSH的简单托管,您可能需要插入/home/username//Users/username/从相对路径切换到绝对路径。一些托管系统可能根本无法处理绝对路径(尽管我倾向于称这种缺乏支持为漏洞)。


谢谢克里斯。我最喜欢此路径,因为它不需要使用ssh配置进行处理。谢谢!
詹姆斯·沃德

1
仅供参考,如果服务器具有“裸”存储库,则连接字符串看起来更像ssh://git@github.com:22/asdf/asdf(没有.git)
Xeoncross 2011年

3

(喜欢它时,我问了它之后就找到答案了。)

我修改了ssh配置,以指定每个主机的端口,而不是全局设置:

Host asdf.com
    Port 1234

Host github.com
    User git
    Hostname github.com
    Port 22

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.