git remote添加其他SSH端口

Jua*_*blo 321 git ssh port

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

git remote add origin ssh://user@host/srv/git/example
Run Code Online (Sandbox Code Playgroud)

igo*_*orw 550

你可以这样做:

git remote add origin ssh://user@host:1234/srv/git/example
Run Code Online (Sandbox Code Playgroud)

1234 是正在使用的ssh端口

  • 请注意,如果删除协议,它将无法工作.即如果你尝试以下,它将无法正常工作.`git remote add origin user @ host:1234/srv/git/example` (45认同)
  • @Sincolas如果您在用户主目录中有repo,它可以工作:**/home/someuser/git-repos/example.git** - >**ssh:// someuser @ <host>:<port>/〜/ git-repos/example.git**.顺便说一句:你得到一个_ <name> .git_ repo by**git clone --bare <adress>** (12认同)
  • 谢谢.只是补充:在路径部分,使用绝对路径,而不是用户主目录的相对路径... (10认同)

bra*_*amp 129

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

Host example.com
    Port 1234
Run Code Online (Sandbox Code Playgroud)

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

  • 它对我有用.我喜欢这种方法比把它放在git遥控器上更好.谢谢!无需以这种方式指定绝对路径. (16认同)
  • 最好将它放在遥控器中,而不是将它隐藏在配置文件中,如下所示:当你在一个地方拥有所有东西时,你永远不会忘记不同的端口号,你可以简单地复制并粘贴其他人使用的URL. (4认同)
  • @MarcH 这实际上取决于情况。我喜欢在我的 VPS 实例上使用随机端口号。将端口放在配置文件中是您可以向协作者隐瞒该信息的一种方法(即当您有多个远程主机时,部署远程主机与内部源代码存储库不同)。 (2认同)

Kon*_*lph 25

ssh://您可以继续使用传统的 URL 形式通过 SSH 访问 git,而不是使用协议前缀,只需稍作改动。提醒一下,传统的 URL 是

git@host:path/to/repo.git
Run Code Online (Sandbox Code Playgroud)

要指定替代端口,请在user@host部件周围加上括号,包括端口:

[git@host:port]:path/to/repo.git
Run Code Online (Sandbox Code Playgroud)

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

git@host:path/to/repo.git
Run Code Online (Sandbox Code Playgroud)

  • 在 git@host:port 周围添加方括号对我来说效果很好。我正在使用 gitlab 并且在该服务器上它需要一个非标准端口,但我也不能使用 repo 的绝对路径(我不知道)。谢谢 (4认同)
  • 这对我来说似乎是最灵活的方法,因为它支持相对路径并且不依赖于 ssh 配置 (2认同)

kuj*_*jiy 24

最佳答案对我不起作用.我需要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
Run Code Online (Sandbox Code Playgroud)


Eva*_*oll 15

对于那些编辑你的人 ./.git/config

[remote "external"]                                                                                                                                                                                                                                                            
  url = ssh://evanc@www.foo.com:11720/aaa/bbb/ccc                                                                                                                                                                                                               
  fetch = +refs/heads/*:refs/remotes/external/* 
Run Code Online (Sandbox Code Playgroud)

  • 完美的。但有一个问题,我该如何对子模块执行此操作?这似乎不起作用。 (2认同)

nob*_*_tq 7

对于 gitlab,示例 ssh 端口是 2224,因此:

git远程添加 ssh://git@192.168.1.100:2224/your_group/your_project.git


Ale*_*lex 6

尝试连接到我的 git 服务器时遇到类似问题

(在 docker 容器中有一个gitea服务器,ssh 端口配置为2022,而不是标准 22,这里作为示例my-git-server.lan)。

  1. 创建 ssh 密钥对(安静,无密码)
$ ssh-keygen -q -N '' -b 4096 -f ~/.ssh/mykeyfile
Run Code Online (Sandbox Code Playgroud)

(这将创建两个文件:公钥mykeyfile.pub和私钥,mykeyfile没有任何扩展名)

  1. 显示公钥的内容并将其复制/粘贴到 git 服务器中您的个人资料的 SSH 密钥(类似于在Github上执行此操作的方式)
$ cat ~/.ssh/mykeyfile.pub
Run Code Online (Sandbox Code Playgroud)
  1. 将以下行添加到 ssh-config 以指定 git-server 的主机名、端口和密钥文件
$ nano ~/.ssh/config
Host my-git-server.lan
  HostName my-git-server.lan
  User git
  Port 2022
  IdentityFile ~/.ssh/mykeyfile
Run Code Online (Sandbox Code Playgroud)

(请注意,无论您在 git 服务器上的实际用户名如何,用户名始终为 ) git

  1. 使用公钥测试与 git 服务器的 ssh 连接,.. 并收到成功消息
$ ssh -T git@my-git-server.lan
Hi there, username! You've successfully authenticated with the key named /Users/username/.ssh/mykeyfile.pub
Run Code Online (Sandbox Code Playgroud)

..使用-v “详细模式”来分析任何错误:

$ ssh -Tvvv git@my-git-server.lan
Run Code Online (Sandbox Code Playgroud)

(再次注意,用户名始终 git是)

  1. 指定本地 git 存储库的远程地址ssh://git@my-git-server.lan:2022/alex/myproject.git(再次注意用户git和端口2022),..检查远程配置
$ cd your/local/git/repository/folder
$ git remote add my-git-server ssh://git@my-git-server.lan:2022/alex/myproject.git
$ git remote -v
Run Code Online (Sandbox Code Playgroud)

(在这里您还可以看到,在我的 git 服务器上,我的实际用户是alex,存储库是myproject

完毕!您现在可以使用 git-server .. fetch/commit/push 等。

(这是我在serverfault.com上发布的帖子的副本)


更新:正如评论中正确指出的那样 - 您不一定需要在远程 URL 中指定端口2022~/.ssh/config ,因为它已经在文件中配置为PORT 2022.