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


100

我正在为远程存储库设置本地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://[email protected]:4019/var/cache/git/project.git' 

我的地方混帐配置为as follows:(端口和主机是实际的端口和主机的占位符)

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

是什么我的git配置错误?

+8

看起来像是y你不要明确地把'ssh://'放在url前面,它认为它是一种不同的格式。所以'ssh://example.com:444/etc /'是通过端口44在example.com上的/ etc /。而example.com:444/etc /'是/ 444/etc/on example.com通过端口22. 26 7月. 112011-07-26 14:42:49

+4

@Kzqai的评论很重要。即如果你做'git remote set-url origin [email protected]:443/yourname/yourrepo /'它不会工作。但是,如果你做'git remote set-url origin ssh://[email protected]:443/yourname/yourrepo /'这将会起作用 28 11月. 132013-11-28 13:11:32

  0

对于Google-fu - 当我有过phabricator时,我遇到了这个问题它设置为2222的非默认端口。现在,排序! 21 2月. 172017-02-21 09:36:40

90

如果你把你的.ssh/config是这样的:

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

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

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

SSH配置可能是一个解决方法,但这让我感兴趣,因为man git-push说接受的ssh url格式是ssh:// [user @] host.xz [:port]/path/to/repo。 git/ 13 10月. 092009-10-13 07:50:21

+1

我不知道,它可能是配置git/ssh版本问题,因为我试图推送到ssh://假的@ localhost:333 /假地址,并得到(如预期)“端口333:连接被拒绝”。 13 10月. 092009-10-13 08:00:56

+28

请注意任何仍然需要此功能的人。对于与你的主目录相关的路径或'git clone ssh:// username @ hostname:333/path/to/repo',语法是'git clone ssh:// username @ hostname:333 /〜/ repo'绝对路径 05 7月. 122012-07-05 21:56:26

  0

在Windows机器上:c:/ windows/system32/drivers/etc/hosts根据需要设置主机名(例如虚拟机/服务器) 21 2月. 172017-02-21 09:36:27


6

SSH不指定时使用:语法港口。要做到这一点最简单的方法是编辑~/.ssh/config文件,并添加:

 
Host git.host.de 
    Port 4019 

然后指定只是git.host.de没有端口号。


9

这避免了你的问题,而不是直接将其固定,但我会建议增加一个~/.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 ...,一切都会解决。


103

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

URL风格:

url = ssh://[[email protected]]host.xz[:port]/path/to/repo.git/ 

SCP样式:

url = [[email protected]]host.xz:path/to/repo.git/ 

注意,SCP风格不允许直接更改端口,而是依赖于主机definit的ssh_config离子在~/.ssh/config如:

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

然后你就可以在一个壳体试验:

ssh my_git_host 

,并改变你的SCP-风格URI在<repo_path>/.git/config为:

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

Soooooo ...所有真正需要的是添加ssh://可能在网址前面。 26 7月. 112011-07-26 14:40:23

  0

没有意识到你可以指定ssh url或scp(默认)不允许端口号。很高兴知道。 10 10月. 142014-10-10 16:36:53

  0

scp实际上允许端口号(但选项键必须是大写字母P):'scp -P 2020 file/to/copy user @ host:path/to/copy/file/to' 25 5月. 162016-05-25 17:03:15


19

试试这个

git clone ssh://[email protected]:11111/home/git/repo.git 
+1

嗨Ricky,它已经为我工作与语法git clone ssh:// user @ machine:port/path-to-repo,你写的机器必须是用户,谢谢 18 9月. 152015-09-18 10:34:07