git通过ssh代理连接github(gitee不支持),并更改端口

这篇具有很好参考价值的文章主要介绍了git通过ssh代理连接github(gitee不支持),并更改端口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求

git clone github/gitee远程仓库,使用ssh协议,并且走本地的http代理(端口3128)。

运行环境是Ubuntu 20.04。

github使用ssh代理的方案

修改~/.ssh/config文件:

# github.com
Host github.com
    Hostname ssh.github.com
    User git
    Port 443
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa  # id_rsa改成你的ssh密钥的文件名
    ProxyCommand nc -X connect -x 127.0.0.1:3128 %h %p  # 127.0.0.1:3128改成你的代理的ip:port
    ServerAliveInterval 20

Hostname ssh.github.comProxyCommand nc -X connect -x 127.0.0.1:3128 %h %p 定义对服务器 github.com 的 ssh 调用应该重新路由到端口 3128 上的代理服务器 127.0.0.1,并且服务器不应该是 github.com 而是更改为ssh.github.com。这是 github 允许使用 git 或 ssh 协议通过 https(端口 443)连接到服务器(That is the server where github allows you to use the git or ssh protocol to connect to over https (port 443).)。

nc/usr/bin/nc是实用程序 Netcat,它为我们完成更改主机名和端口号的工作。在一些Linux服务器上,是默认安装的。

ServerAliveInterval 20通过每 20 秒发送一个数据包来确保连接保持活动状态,以防止“管道破裂”。用户 git 确保您不会以本地 Linux 用户身份连接到 github.com,而是以用户 git 身份连接。

注意,以上是走了代理,如果不需要走代理,只需要如下配置:

# github.com
Host github.com
  HostName github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa  # id_rsa改成你的ssh密钥的文件名

gitee无法实现ssh代理

仿照github的配置

# gitee.com
Host gitee.com
    Hostname gitee.com
    User git
    Port 443
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa
    ProxyCommand nc -X connect -x 127.0.0.1:3128 %h %p
    ServerAliveInterval 20

无法连接,使用ssh -Tv gitee.com进行debug,返回400 Bad Request

> OpenSSH_8.2p1 Ubuntu-4ubuntu0.3, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /home/ljw/.ssh/config
debug1: /home/ljw/.ssh/config line 10: Applying options for gitee.com
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Executing proxy command: exec nc -X connect -x 127.0.0.1:3128 gitee.com 443
debug1: identity file /home/ljw/.ssh/id_rsa type 0
debug1: identity file /home/ljw/.ssh/id_rsa-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.3
debug1: kex_exchange_identification: banner line 0: HTTP/1.1 400 Bad Request
debug1: kex_exchange_identification: banner line 1: Server: stgw/1.3.12_1.13.5
debug1: kex_exchange_identification: banner line 2: Date: Tue, 20 Jun 2023 09:44:28 GMT
debug1: kex_exchange_identification: banner line 3: Content-Type: text/html
debug1: kex_exchange_identification: banner line 4: Content-Length: 179
debug1: kex_exchange_identification: banner line 5: Connection: close
debug1: kex_exchange_identification: banner line 6:
debug1: kex_exchange_identification: banner line 7: <html>
debug1: kex_exchange_identification: banner line 8: <head><title>400 Bad Request</title></head>
debug1: kex_exchange_identification: banner line 9: <body bgcolor="white">
debug1: kex_exchange_identification: banner line 10: <center><h1>400 Bad Request</h1></center>
debug1: kex_exchange_identification: banner line 11: <hr><center>stgw/1.3.12_1.13.5</center>
debug1: kex_exchange_identification: banner line 12: </body>
debug1: kex_exchange_identification: banner line 13: </html>

原因是gitee不支持443端口的ssh服务。

去官方issue查看,2年前就有人提问(https://gitee.com/oschina/git-osc/issues/I38LRU)
git ssh 端口,工具,git,github,ssh,gitee

但现在都还不支持非22端口的ssh服务:
git ssh 端口,工具,git,github,ssh,gitee

gitee的暂时解决方案

使用https替代,更改git/ssh地址为https地址。

git config --global url."https://".insteadof "git://"
git config --global url."https://github.com/".insteadof "git@github.com:"

(可选)记住git账号密码
git https记住密码的方法 https://blog.csdn.net/AV_woaijava/article/details/100887704

git config --global credential.helper store

会在~/.gitconfig文件中生成下面的配置。

[credential]
	helper = store

登录过后的账号密码,会记录在~/.git-credentials文件中文章来源地址https://www.toymoban.com/news/detail-581337.html

格式:
协议://username:password@git域名

如:
https://nefu_ljw:xxx@gitee.com

参考

  • https://technology.amis.nl/platform/getting-started-with-git-behind-a-company-proxy/
  • https://stackoverflow.com/a/57133963
  • https://adangel.org/2020/10/15/github-behind-proxy/

到了这里,关于git通过ssh代理连接github(gitee不支持),并更改端口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Git多账号管理通过ssh 公钥的方式,git,gitlab,gitee

    按照目前国内访问git,如果不科学上网,我们很大可能访问会超时。基于这个,所以我现在的git 配置已经增加到了3个了 一个公司gitlab,一个git,一个gitee. 以下基于这个环境,我们来说明下如何创建配置ssh公钥。 以下操作都基于win11系统 这一步生成过程中,可以给rsa文件取

    2024年02月07日
    浏览(45)
  • 如何通过git指令加入管理者仓库并提交分支(Github Gitee)

    GitHub: https://github.com/ Gitee : https://gitee.com/ 打开对应的网站之后可以直接通过邮箱创建账户 下载git 安装地址: https://git-scm.com/download 安装Git后右键桌面可显示 Git Bash 和 Git GUI Git GUI: Git提供的图形界面工具 Git Bash: Git提供的命令行工具 git基础配置 右键打开Git Bash输入 gi

    2024年02月07日
    浏览(61)
  • github 通过ssh进行连接的另一种方式

    一般使用ssh连接是通过22端口。如果已经把ssh公钥假如到了github中还无法连接。可以通过 测试一下。如果报出 ssh: connect to host github.com port 22: Connection timed out 可以通过443 端口进行连接 注意:端口 443 的主机名为 ssh.github.com,而不是 github.com。 也需修改项目地址

    2024年01月20日
    浏览(67)
  • 使用 SSH 方式实现 Git 远程连接GitHub

    git是目前世界上最先进的分布式版本控制系统,相比于SVN,分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作!当有网络的时候,再把本地提交推送一下就完成了同步,非常方便,故而也得到了广大IT工作者的青睐

    2024年01月18日
    浏览(69)
  • 使用ssh连接github——git学习之路(二)

    ssh全称为Secure Shell, 意味安全的外壳,旨在为不安全的网络提供共安全的通信。 参考自碎步の流年的博客 使用ssh连接github,能够增强安全性和便捷性。因为可以启用ssh代理,这样就不用每次push都要输入密码。 首先,要保证本机安装了ssh工具,一般windows会自带openssh,没有的

    2024年02月14日
    浏览(57)
  • IDEA中怎么使用git下载项目到本地,通过URL克隆项目(gitee\github)

    == 通过URL拉取项目代码== gitee github也是一样的 返回IDEA 将刚刚复制的URL粘贴进去 选择合适的位置 点击克隆

    2024年02月14日
    浏览(71)
  • 关于本地git通过ssh链接github时 time out问题的解决方法

    我们如果想要用git ssh链接到远端github,进行repo的clone等操作时,会进行如下的操作: 首先在ssh端命令生成rsa秘钥,命令如下: ssh-keygen -t rsa -C “你的git绑定的邮箱名字” 然后在github端新建ssh key, 将生成的key写进去。 然后对是否建立联系进行验证,通常运行 ssh -T git@github.

    2024年02月08日
    浏览(47)
  • Centos7更改ssh端口

    打开sshd_config配置文件,找到【 Port 22 】 ,删除注释符号【 # 】,将22改为要设置的目的端口,然后保存文件并退出。 添加端口到防火墙: 重启防火墙: 查看开放ssh使用的端口: 开放当前设置的ssh端口: 重启ssh: 重新启动服务器,就可以使用新设置的端口登录ssh了: 注意

    2024年02月14日
    浏览(37)
  • 如何在Linux中更改SSH端口?

    SSH(Secure Shell)是一种安全的远程登录协议,它允许您通过网络远程连接到Linux系统并进行管理操作。默认情况下,SSH使用22端口进行通信。然而,为了增强系统的安全性,有时候我们需要更改SSH端口,以减少潜在的攻击。 本文将详细介绍在Linux系统中如何更改SSH端口。 在进

    2024年02月06日
    浏览(43)
  • CentOS 如何更改SSH端口的方法

    本文将分享CentOS 如何更改SSH端口的方法。执行以下步骤以更改CentOS上的默认SSH端口号: 1、登录centos服务器; 2、输入vi /etc/ssh/sshd_config编辑此文件. 在原配置文件 Port 22这行回车添加新端口,然后按键盘的Esc退出编辑,再然后输入:wq保存并退出。添加一个新的端口最好把原来

    2024年02月08日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包