Git On自定义SSH端口

时间:2011-04-24 00:21:47

标签: git version-control ssh cygwin

我的VPS提供商建议我将SSH端口保留为默认分配的自定义端口号(不是22)。事情是我知道我可以在创建远程配置时给出端口号,但是在做git克隆时我似乎无法做同样的事情。我正在使用gitolite所以我克隆命令看起来像:

git clone git@mydomain.com:gitolite-admin

有没有办法将其转换为使用自定义ssh端口号?

我还应该提到我在windows上运行cygwin。我看到多个地方都说将自定义端口添加到~/.ssh/config文件中,如

Host mydomain.com
    Port 12345

然而在cygwin中,该文件似乎不存在。

5 个答案:

答案 0 :(得分:278)

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

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

答案 1 :(得分:8)

当您需要主目录中的相对路径时,请使用以下奇怪的语法:

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

例如,如果repo位于服务器/home/jack/projects/jillweb上的jill.com中,并且您正在jack以[{1}}监听端口4242登录:

sshd

ssh://jack@jill.com:4242/~/projects/jillweb登录时(假设您拥有文件权限):

jill

答案 2 :(得分:7)

  

以上答案很好,但对于像我这样的新git用户并不清楚。因此,经过一番调查,我提供了这个新答案。

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

当配置文件不存在时,您可以创建一个。除了port之外,配置文件还可以包含其他ssh配置选项:user IdentityFile,依此类推,配置文件看起来像

Host mydomain.com
    User git
    Port 12345

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

2 ssh url方式如何?

太酷了,我们唯一应该知道的是git中ssh url有两种​​语法

  • 标准语法ssh://[user@]host.xz[:port]/path/to/repo.git/
  • 类似于语法[user@]host.xz:path/to/repo.git/的scp

默认情况下,Gitlab和Github将显示类似于语法的scp 网址,我们无法提供自定义ssh端口。因此,为了更改ssh端口,我们需要使用标准语法

答案 3 :(得分:4)

(更新:几年后Google和Qwant"航空公司"在搜索" git非默认ssh端口时仍然将我发送到此处#34;) 在较新的git版本中可能更好的方法是使用GIT_SSH_COMMAND ENV.VAR,如:

GIT_SSH_COMMAND="ssh -oPort=1234 -i ~/.ssh/myPrivate_rsa.key" \ git clone myuser@myGitRemoteServer:/my/remote/git_repo/path

这具有允许任何其他ssh合适选项(端口,priv.key,IPv6,PKCS#11设备......)的附加优势。

答案 4 :(得分:1)

Github 此后发布了 a helpful article 解释如何解决此问题。