自定义SSH端口上的Git

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

git clone git@mydomain.example:gitolite-admin

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

我还应该提到我在Windows上运行cygwin。我已经看到很多地方说添加自定义端口到~/.ssh/config文件,如

Host mydomain.example
Port 12345

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

221943 次浏览
git clone ssh://git@mydomain.example:[port]/gitolite-admin

注意,端口号应该不带方括号:[]

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

ssh://[user@]host.example[:port]/~[user]/path/to/repo

例如,如果回购在服务器jill.example/home/jack/projects/jillweb中,并且您以jack登录,并在端口4242上监听sshd:

ssh://jack@jill.example:4242/~/projects/jillweb

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

ssh://jill@jill.example:4242/~jack/projects/jillweb

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

GIT_SSH_COMMAND="ssh -oPort=1234 -i ~/.ssh/myPrivate_rsa. "关键的“\ git克隆myuser@myGitRemoteServer:/my/remote/git_repo/path

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

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

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

当配置文件不存在时,可以新建配置文件。除了port配置文件还可以包括其他SSH配置选项:user 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端口,我们需要使用标准语法

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

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

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

ssh://头是窍门