ChatGPT解决这个技术问题 Extra ChatGPT

git remote add 与其他 SSH 端口

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

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

m
minimalpop

你可以这样做:

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

1234 是正在使用的 ssh 端口


谢谢。只是一个补充:在路径部分,使用绝对路径,而不是用户主目录的相对路径......
@Snicolas:为什么不使用相对路径?
@Sincolas 如果您在用户主目录中有 repo,它就可以工作: /home/someuser/git-repos/example.git --> ssh://someuser@:/~/git-repos/例子.git 。顺便说一句:你得到一个 .git repo by git clone --bare
@Jameo 这是一条绝对路径。
请注意,如果您删除协议,它将不起作用。即,如果您尝试以下操作,它将无法正常工作。 git remote add origin user@host:1234/srv/git/example
b
bramp

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

Host example.com
    Port 1234

快速 google 搜索显示 few different 资源比我更详细地解释它。


它确实对我有用。我更喜欢这种方法,而不是把它放在 git 遥控器中。谢谢!这种方式也不需要指定绝对路径。
这很好用。同样,我可以有一个特定的密钥而不是默认的 id_rsa。不仅如此,我的服务器很挑剔,或多或少你必须足够快地拥有它,如果你包含密码就会失败。所以我也使用 PasswordAuthentication no
最好将它放在远程中而不是像这样将其隐藏在配置文件中:当您将所有东西都放在一个地方时,您永远不会忘记不同的端口号,您可以简单地复制并粘贴 URL 以供其他人使用。
@MarcH这实际上取决于情况。我喜欢在我的 VPS 实例上使用随机端口号。将端口包含在配置文件中是您可以向协作者隐瞒该信息的一种方式(即当您有多个遥控器时,部署远程主机与内部源代码存储库不同)。
@RagunathJawahar 我不认为使用随机端口号是一个非常常见的用例。
k
kujiy

最佳答案对我不起作用。我从一开始就需要 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

Debian 10 在另一个 ssh 端口中工作。测试 ssh -T git@github.com 得到错误连接超时。然后这个 setup git remote set-url origin git@github.com:22/USER/REPOSITORY.git 解决了这个问题。谢谢库吉!
K
Konrad Rudolph

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

git@host:path/to/repo.git

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

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

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

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

在 git@host:port 周围添加方括号对我来说效果很好。我正在使用 gitlab 并且在该服务器上它需要一个非标准端口,但我也不能使用 repo 的绝对路径(我不知道)。谢谢
这对我来说似乎是最灵活的方法,因为它支持相对路径并且不依赖 ssh 配置
嗯,它是 GIT_SSH_COMMAND,看看这个 git-scm.com/docs/git
使用 git remote add 将其添加为远程时,我必须将 URL 用双引号括起来才能使此语法正常工作。像这样:git remote add gitea "[git@host:port]:path/to/repo.git"
@raisinrising 这与 Git 无关,它取决于您使用的外壳。对于 sh/Bash/... 此处不需要引号。
E
Evan Carroll

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

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

完美的。但是有一个问题,我该如何为子模块做到这一点?它似乎不起作用。
n
nobjta_9x_tq

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

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


A
Alex

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

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

创建 ssh 密钥对(安静,无密码)

$ ssh-keygen -q -N '' -b 4096 -f ~/.ssh/mykeyfile

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

显示公钥的内容并将其复制/粘贴到您的 git-server 中的配置文件的 SSH 密钥(类似于您在 Github 上的操作方式)

$ cat ~/.ssh/mykeyfile.pub

将以下行添加到 ssh-config 以指定 git-server 的主机名、端口和密钥文件

$ nano ~/.ssh/config
Host my-git-server.lan
  HostName my-git-server.lan
  User git
  Port 2022
  IdentityFile ~/.ssh/mykeyfile

(请注意,无论您在 git 服务器上的实际用户名如何,用户名都是 always git

使用公钥测试与您的 git-server 的 ssh 连接,.. 并收到成功消息

$ ssh -T git@my-git-server.lan
Hi there, username! You've successfully authenticated with the key named /Users/username/.ssh/mykeyfile.pub

.. 使用 -v "verbose mode" 分析任何错误:

$ ssh -Tvvv git@my-git-server.lan

(再次注意,用户名是always git

为本地 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

(在这里您还可以看到,在我的 git-server 上,我的实际用户是 alex 而存储库是 myproject )

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

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

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


谢谢你,这很好用。一件小事,我不需要将 PORT 添加到远程 URL。只需在 ~/.ssh/config 中创建主机,它就会自动使用那里指定的端口
B
Baach

看看如何正确设置你的 ~/.ssh/config 文件。

您可以轻松地为不同的主机指定不同的设置。

为了解决您的问题,您将设置

Host github.com 
Port 22 
Host * 
Port 1234

查看 ssh_config 手册页,它在前几页中解释了您需要了解的所有内容。


W
Whu_Kingsun

1.git远程添加${shortname} ${url}

2.git remote remove shortname(是删除一个遥控器)

3.git remote -v(就是查看你当前的远程列表)

4.git推送远程分支

5.git远程重命名AB(将A重命名为B)

6.git remote show shortname(显示远程信息)

这一切都对我有用。