我的VPS提供商建议我将SSH端口保留为他们默认分配的自定义端口号(而不是22)。问题是,虽然我知道在创建远程配置时可以提供端口号,但在进行Git克隆时似乎不能这样做。我使用gitolite,所以克隆命令看起来像:

git clone git@mydomain.example:gitolite-admin

是否有一种方法将其隐蔽为使用自定义SSH端口号?

我还应该提到我在Windows上运行Cygwin。我看到很多地方都说要将自定义端口添加到~/。ssh /配置文件:

Host mydomain.example
    Port 12345

但是在Cygwin中,该文件似乎不存在。


当前回答

如果您正在为SSH使用自定义端口(转发),正确的解决方案是

git clone ssh://git@url:2222/user/repo.git

ssh://头文件是诀窍。

其他回答

当你想要从你的主目录获得相对路径时(在任何UNIX上),你可以使用这个奇怪的语法:

ssh: / / [user@] host.example[:港口]~[用户]/道路/ /回购

例如,如果repo在服务器的/home/jack/projects/jillweb。例如,您以jack身份登录,SSHD监听端口4242:

ssh: / / jack@jill。example: / ~ /项目/ jillweb投寄

当以jill的身份登录时(假设你有文件权限):

ssh: / / jill@jill。example: / ~杰克/项目/ jillweb投寄

上面的答案很好,但对于像我这样的Git新用户来说并不清楚。所以经过一番调查,我给出了这个新的答案。

SSH配置文件方式有什么问题?

当配置文件不存在时,可以新建配置文件。除了端口,配置文件还可以包括其他SSH配置选项:用户IdentityFile等等,配置文件如下所示

Host mydomain.example
    User git
    Port 12345

如果您正在运行Linux,请注意配置文件必须具有严格的权限:用户可以读/写,其他人不能访问

SSH URL方式呢?

这很酷,我们只需要知道Git中SSH URL有两种语法

标准语法ssh://[user@]host.xz[:port]/path/to/repo.git/ SCP类语法[user@]host.xz:path/to/repo.git/

默认情况下,Gitlab和GitHub将显示类似scp语法的URL,我们不能提供自定义SSH端口。因此,为了改变SSH端口,我们需要使用标准语法

(更新:几年后谷歌和Qwant“航空公司”仍然发送我在这里搜索“git非默认ssh端口”) 在较新的git版本中,可能更好的方法是使用GIT_SSH_COMMAND ENV。VAR:

GIT_SSH_COMMAND=“ssh -oPort=1234 .ssh/myPrivate_rsa实现。”key”\ git克隆myuser@myGitRemoteServer:/my/遥控器/git_repo/path

这有一个额外的优势,允许任何其他ssh合适的选项(端口,privi .key, IPv6, PKCS#11设备,…)。

git clone ssh://git@mydomain.example:[port]/gitolite-admin

注意,端口号应该没有方括号:[]

Github已经发布了一篇有用的文章来解释如何解决这个问题。