我的VPS提供商建议我将SSH端口保留为他们默认分配的自定义端口号(而不是22)。问题是,虽然我知道我可以在创建远程配置时提供端口号,但在进行Git克隆时似乎无法做到这一点。我使用的是gitolite,因此克隆命令如下所示:
git clone git@mydomain.example:gitolite-admin
是否有办法将此转换为使用自定义SSH端口号?
我还应该提到我正在Windows上运行Cygwin,我看到多个地方说要将自定义端口添加到~/.ssh/config
文件中:
Host mydomain.example
Port 12345
然而在Cygwin中,该文件似乎不存在。
6条答案
按热度按时间7gs2gvoe1#
请注意,端口号应该不带方括号:第一个月
kgsdhlau2#
上面的答案很不错,但对于像我这样的Git新用户来说并不清楚。所以经过一番调查,我给出了这个新答案。
SSH配置文件方式有什么问题?
当配置文件不存在时,您可以创建一个。除了
port
之外,配置文件还可以包含其他SSH配置选项:user
IdentityFile
等等,配置文件如下所示如果您运行的是Linux,请注意配置文件必须具有严格的权限:用户可读/写,其他用户不可访问
SSH URL方式如何?
这很酷,我们唯一需要知道的是Git中有两种SSH URL语法
ssh://[user@]host.xz[:port]/path/to/repo.git/
[user@]host.xz:path/to/repo.git/
默认情况下,Gitlab和GitHub会显示scp类语法URL,并且我们无法给予自定义SSH端口。因此,为了更改SSH端口,我们需要使用标准语法
t40tm48m3#
当您需要主目录(在任何UNIX上)的相对路径时,请使用以下奇怪的语法:
第一个月
例如,如果存储库位于服务器
jill.example
上的/home/jack/projects/jillweb
中,并且您以jack
身份登录,sshd
侦听端口4242:ssh://jack@jill.example:4242/~/projects/jillweb
以
jill
身份登录时(假设您具有文件权限):ssh://jill@jill.example:4242/~jack/projects/jillweb
wydwbb8l4#
(更新:几年后Google和Qwant搜索“git non-default ssh port”时,“airlines”仍然会把我发送到这里)在更新的git版本中,一个可能更好的方法是使用GIT_SSH_COMMAND ENV.VAR,如下所示:
第一个月
这具有允许任何其他ssh合适选项(端口、priv.key、IPv6、PKCS#11设备...)的附加优点。
kmbjn2e35#
如果您使用自定义端口(转发)进行SSH,正确的解决方案是
ssh://
标头是诀窍。fnatzsnv6#
Github已经发布了a helpful article来解释如何解决这个问题。