git ssh的端口怎么改

有个ssh+git的配置问题请教一下各位大佬,我在云服务器上搭建了git服务器,前几天把云服务的ssh端口改成非22端口了,现在ssh连接服务器都是通过本地中配置好的简写命令直接ssh连接上去的,服务器也关闭了22端口,现在ssh登录没有问题。
现在的问题是,在本地执行git pull的时候git还是使用了22端口,导致无法拉取代码,我想知道git怎么针对某个仓库单独配置端口,而不改变全局的git配置,毕竟还有其他项目在github等其他远程仓库?

# ~/.ssh/config
Host hwy
    HostName xxx.xxx.xxx.xx
    User ABC
    Port 12345 # 服务器上的sshd_config端口与这里一致
    IdentityFile ~/.ssh/id_rsa

拉取代码报错如下:

➜  image-upload-qiniu git:(master) ✗ git pull gitlab master
ssh: connect to host gitlab.mhynet.cn port 22: Connection refused
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
阅读 10.1k
2 个回答

感谢楼上@然后去远足 的提醒,我去查了一下git官方文档,找到了问题的原因,原来git配置中的url写法有好几种,使用ssh协议格式最常用的写法git@host:/path是最常用的一种,但是这种格式不支持修改默认端口,除了这种格式之外,支持ssh的还有几种格式,具体内容可以查阅git官方文档
https://git-scm.com/docs/git-...

The following syntaxes may be used with them:

*   ssh://\[user@\]host.xz\[:port\]/path/to/repo.git/
    
*   git://host.xz\[:port\]/path/to/repo.git/
    
*   http\[s\]://host.xz\[:port\]/path/to/repo.git/
    
*   ftp\[s\]://host.xz\[:port\]/path/to/repo.git/
    

An alternative scp-like syntax may also be used with the ssh protocol:

*   \[user@\]host.xz:path/to/repo.git/

如果要改端口的话,为了避免全局污染,最好不要修改~/.ssh/config文件,仅需要修复项目的.git/config中的url为ssh://\[user@\]host.xz\[:port\]/path/to/repo.git/格式,与最常用的格式相比,仅仅是在前面加上了ssh://前缀,然后在域名后面加上端口而已。

新克隆的项目克隆的时候在仓库地址的域名后面指定端口号就行了。

已经客隆过的项目,可以进到项目下的 .git 目录(一个隐藏文件夹)下,编辑 config 文件,直接加上端口号,保存即可。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏