Git On自定义SSH端口

rya*_*zec 135 git ssh version-control cygwin

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

git clone git@mydomain.com:gitolite-admin
Run Code Online (Sandbox Code Playgroud)

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

我还要提一下我在windows上运行cygwin.我已经看到多个地方说要将自定义端口添加到~/.ssh/config文件中

Host mydomain.com
    Port 12345
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*sto 297

git clone ssh://git@mydomain.com:[port]/gitolite-admin
Run Code Online (Sandbox Code Playgroud)

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

  • 请注意,如果删除协议,它将无法工作.即如果你尝试以下,它将无法正常工作.`git clone git@mydomain.com: [port]/gitolite-admin` (39认同)
  • :-)如果你问我,git URL语法是不干净的,上面的规范化程度更高 (5认同)
  • 在带有 plink 的 Windows 上,工作语法似乎是`git clone ssh://git@mydomain.com:port/home/user/gitolite-admin` (2认同)
  • 使用 git 更新到较新的版本 2.33.1 - ssh 连接时无法使用备用端口。唯一的解决方案是不使用本机 git ssh 客户端,例如用 openssh 替换它。我对着 git 开发小组笑了; (2认同)

Bad*_*laj 19

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

git clone ssh://git@url:2222/user/repo.git
Run Code Online (Sandbox Code Playgroud)

标题ssh://就是窍门。


Dan*_*tos 10

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

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

例如,如果repo在/home/jack/projects/jillweb服务器上,jill.com并且您正在jack使用sshd侦听端口4242 登录:

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

登录时jill(假设您有文件权限):

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

  • @ShaunWilson路径规范是标准的UNIX路径。如果您登录到UNIX系统,〜是主目录的简写,它可以节省很多键入内容,并且主目录可能位于非标准位置。上述内容可能无法在Windows服务器上运行。 (2认同)

ear*_*zon 7

(更新:几年后,Google和Qwant“航空公司”在搜索“ git non-default ssh port”时仍然将我发送到这里)在较新的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设备等)的附加优点。

  • 这个 `GIT_SSH_COMMAND="ssh -oPort=1234 -i ~/.ssh/myPrivate_rsa.key"` 非常适合我们在不同端口上运行本地 gitlab 实例。谢谢 (3认同)

Jim*_*een 5

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

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

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

Host mydomain.com
    User git
    Port 12345
Run Code Online (Sandbox Code Playgroud)

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

2 ssh url方式如何?

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

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

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