我在Git中如何添加远程源服务器,如果我的主机使用不同的SSH端口?
git remote add origin ssh://user@host/srv/git/example
你可以直接这样做:
git remote add origin ssh://user@host:1234/srv/git/example
1234
是使用的 ssh 端口号。
不必使用ssh://
协议前缀,您可以继续使用传统的URL形式来访问通过SSH连接的git仓库,只需要进行一些小修改。提醒一下,传统的URL是:
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 remote add
添加它作为远程仓库时,我不得不用双引号将URL包含起来,以使该语法生效。就像这样:git remote add gitea "[git@host:port]:path/to/repo.git"
- raisinrisingzsh
。 - raisinrising最佳答案对我无效。 我需要一开始就有 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
如果你要编辑./.git/config
文件
[remote "external"]
url = ssh://evanc@www.foo.com:11720/aaa/bbb/ccc
fetch = +refs/heads/*:refs/remotes/external/*
git remote add ssh://git@192.168.1.100:2224/your_group/your_project.git
我曾经遇到连接git服务器的类似问题。
( 我有一个在docker容器中运行的gitea服务器,ssh端口配置为2022
,而不是标准的22端口,例如:my-git-server.lan
)。
$ ssh-keygen -q -N '' -b 4096 -f ~/.ssh/mykeyfile
mykeyfile.pub
和私钥文件mykeyfile
,均无扩展名。$ cat ~/.ssh/mykeyfile.pub
$ nano ~/.ssh/config
Host my-git-server.lan
HostName my-git-server.lan
User git
Port 2022
IdentityFile ~/.ssh/mykeyfile
(请注意,用户名始终是 git
,无论您在 git 服务器上的实际用户名是什么)
$ ssh -T git@my-git-server.lan
Hi there, username! You've successfully authenticated with the key named /Users/username/.ssh/mykeyfile.pub
使用-v“详细模式”分析任何错误:
$ ssh -Tvvv git@my-git-server.lan
(注意,用户名始终为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服务器上,我的实际用户是alex,存储库是myproject)
完成!现在你可以在你的git服务器上工作了...拉取/提交/推送等操作。
(这是我在serverfault.com上发布的一篇文章的副本)
更新:正如评论中所指出的那样 - 您不一定需要在远程URL中指定端口2022,因为它已经在~/.ssh/config
文件中配置为PORT 2022
。
~/.ssh/config
中创建主机,它就会自动使用那里指定的端口。 - sebasira看一下如何正确设置你的~/.ssh/config文件。
你可以轻松地为不同的主机指定不同的设置。
要解决你的问题,你需要设置:
Host github.com
Port 22
Host *
Port 1234
请查看ssh_config手册页面,前几页就能解释你需要了解的一切。
1. git remote add ${shortname} ${url}
2. git remote remove shortname (删除远程仓库)
3. git remote -v (查看当前远程仓库列表)
4. git push remote branch
5. git remote rename A B (将A重命名为B)
6. git remote show shortname (显示远程仓库信息)
这些对我都有效。
ssh://git@myhost.com:1234/project.git
,而不是ssh://git@myhost.com:1234/~/repositories/project.git
)。我猜测gitolite在这里做了一些自动化处理。 - kittigit remote add origin user@host:1234/srv/git/example
- Bijay Rungtagit remote add origin myhost:/srv/git/example
- undefined