使用带有非标准端口的远程存储库

我正在为一个远程存储库设置我的本地 git 项目。远程存储库在一个非标准端口(4019)上服务。

但是它不起作用,相反,我得到了下面的错误消息:

ssh: connect to host git.host.de:4019 port 22: Connection refused
fatal: The remote end hung up unexpectedly
error: failed to push to 'ssh://root@git.host.de:4019/var/cache/git/project.git'

我的本地 git 配置是 如下所示:

[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = ssh://root@git.host.de:4019/var/cache/git/project.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master

(端口和主机是实际端口和主机的占位符。)

我的 git 配置出了什么问题?

147015 次浏览

如果你把这样的东西放在你的 .ssh/config:

Host githost
HostName git.host.de
Port 4019
User root

那么你应该能够使用基本的语法:

git push githost:/var/cache/git/project.git master

SSH 在指定端口时不使用 :语法。最简单的方法是编辑 ~/.ssh/config文件并添加:

Host git.host.de
Port 4019

然后指定没有端口号的 git.host.de

这避免了您的问题,而不是直接修复它,但我建议添加一个 ~/.ssh/config文件,并拥有类似的东西

Host git_host
HostName git.host.de
User root
Port 4019

你就可以拥有

url = git_host:/var/cache/git/project.git

你也可以 ssh git_hostscp git_host ...,一切都会解决。

基于 SSH 的 git 访问方法可以在 <repo_path>/.git/config中使用完整的 URL 或类似 SCP 的语法指定,如 http://git-scm.com/docs/git-clone中所指定的:

网址样式:

url = ssh://[user@]host.xz[:port]/path/to/repo.git/

SCP 风格:

url = [user@]host.xz:path/to/repo.git/

请注意,SCP 样式不允许直接更改端口,而是依赖于 ~/.ssh/config中的 ssh_config主机定义,例如:

Host my_git_host
HostName git.some.host.org
Port 24589
User not_a_root_user

然后,您可以在 shell 中使用以下命令进行测试:

ssh my_git_host

并将 <repo_path>/.git/config中的 SCP 样式 URI 更改为:

url = my_git_host:path/to/repo.git/

试试这个

git clone ssh://user@32.242.111.21:11111/home/git/repo.git