git remote add with other SSH port


336

在Git中,当主机使用其他SSH端口时,如何添加远程源服务器?

git remote add origin ssh://user@host/srv/git/example

Answers:


573

您可以这样做:

git remote add origin ssh://user@host:1234/srv/git/example

1234 是正在使用的ssh端口


10
谢谢。只是一个补充:在路径部分,使用绝对路径,而不是用户主目录的相对路径...
Snicolas 2012年

@Snicolas:为什么不使用相对路径?
汉尼斯,2012年

12
@Sincolas如果您在用户主目录中有存储库,则可以使用它:/home/someuser/git-repos/example.git- > ssh:// someuser @ <host>:<port> /〜/ git-repos / example.git。顺便说一句:你得到一个<名> git的回购由混帐克隆--bare <ADRESS>
MartinL

@Jameo这一条绝对路径。
igorw

48
请注意,如果删除协议,它将无法正常工作。即,如果您尝试以下操作,它将无法正常工作。git remote add origin user@host:1234/srv/git/example
比杰·伦塔

137

您需要编辑〜/ .ssh / config文件。添加如下内容:

Host example.com
    Port 1234

谷歌快速搜索显示了一些 不同的资源,比我更详细地解释了它。


16
它确实为我工作。我喜欢这种方法,而不是将其粘贴在git远程中。谢谢!无需通过这种方式指定绝对路径。
Michael van Rooijen

这很好。同样,我可以使用特定的密钥代替默认的id_rsa。不仅如此,我的服务器还很挑剔,您或多或少都必须足够快地使它正确运行,如果包含密码,该服务器将失败。所以我也使用PasswordAuthentication no
亚历克西斯威尔克

4
最好将它放在远程目录中而不是像这样将其隐藏在配置文件中:当您将所有内容都放在一个位置时,您永远不会忘记不同的端口号,并且只需复制并粘贴URL供其他人使用。
MarcH 2014年

1
@MarcH实际上取决于情况。我喜欢在VPS实例上使用随机端口号。将端口包含在配置文件中是一种从协作者保留该信息的方法(也就是说,当您有多个远程服务器时,部署远程主机与内部源代码存储库不同)。
Ragunath Jawahar 2014年

@RagunathJawahar我不认为使用随机端口号是很常见的用例。
MarcH 2014年

29

最佳答案对我不起作用。我ssh://从一开始就需要。

# does not work
git remote set-url origin user@example.com:10000/aaa/bbbb/ccc.git
# work
git remote set-url origin ssh://user@example.com:10000/aaa/bbbb/ccc.git

17

对于那些您编辑 ./.git/config

[remote "external"]                                                                                                                                                                                                                                                            
  url = ssh://evanc@www.foo.com:11720/aaa/bbb/ccc                                                                                                                                                                                                               
  fetch = +refs/heads/*:refs/remotes/external/* 

1
完善。但是,一个问题是,如何为子模块执行此操作?它似乎不起作用。
m4l490n

10

除了使用ssh://协议前缀之外,您可以继续使用传统的URL形式通过SSH来访问git,只需要进行少量更改即可。提醒一下,常规网址为

git@host:path/to/repo.git

要指定备用端口,请在user@host零件周围加上括号,包括端口:

[git@host:port]:path/to/repo.git

但是,如果端口更改只是临时的,则可以告诉git使用其他SSH命令,而不是更改存储库的远程URL:

export SSH_GIT_COMMAND='ssh -p port'
git clone git@host:path/to/repo.git # for instance

2
在git @ host:port周围加上方括号对我来说效果很好。我正在使用gitlab,并且在该服务器上它需要一个非标准端口,但我也无法使用回购的绝对路径(我不知道)。谢谢
Thomas Le

1
对于我来说,这似乎是最灵活的方法,因为它支持相对路径并且不依赖ssh配置
user2882096
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.