git使用代理及ssh协议走443端口

git客户端连接服务器的2种方式

git的使用这里不再赘述,此篇文章与代理相关。全文简易干货

git客户端与代码服务器(github、gitlab、Gerrit等)创建连接有2种方式:https和ssh

连接之前需要配置本地账户及邮箱,例如:

git config --global user.name "effordson"
git config --global user.email "your-email@qq.com"

https连接

下载代码示例:

git clone https://github.com/Effordson/mydoc.git

ssh连接

需要使用ssh-keygen先创建密钥对,再上传公钥到代码服务器

下载代码示例:

git clone git@github.com:Effordson/mydoc.git

git config配置生效范围

通过命令git config -h可以查看帮助,设置生效范围有:

usage: git config [options]

Config file location
    --global              use global config file
    --system              use system config file
    --local               use repository config file
    -f, --file <file>     use given config file
    --blob <blob-id>      read config from given blob object

配置含义解释:
global 即是读/写当前用户全局的配置文件(~/.gitconfig 文件,属于某个计算机用户)
system 即是读写系统全局的配置文件(/etc/gitconfig 文件,属于计算机)
local 即是当前 clone 仓库 的配置文件(位于 clone 仓库下 .git/config)。

通过代理服务器https连接

目前还没有实现ssh连接,通过代理服务器访问代码仓库,以下是https连接配置代理。

配置https代理服务器

前提: git下载代码方式是https连接,需要配置squid或者其他的代理服务器

适用范围: Windows和Linux

配置https代理,没有身份验证代理:

git config --global https.proxy https://139.198.116.112:3128
git config --global http.proxy http://139.198.116.112:3128  # http的不配亦可

查看全局配置:~/.gitconfig

[root@module ~]#git config --list 
user.name=effordson
user.email=your-email@qq.com
https.proxy=https://139.198.116.112:3128 # 代理服务器IP和端口,当前使用的是squid代理
http.proxy=http://139.198.116.112:3128

如果代理服务器是需要身份验证的,需要配置账户密码,配置http/https代理原型:

git config --global http.proxy http[s]://userName:password@proxyaddress:port

身份验证代理配置实例:

[root@module ~]#cat .gitconfig 
[user]
	name = effordson
	email = your-email@qq.com
[https]
	proxy = https://username:password@139.198.116.112:3128
[http]
	proxy = http://username:password@139.198.116.112:3128

取消https代理设置

直接删除代理配置或者通过命令删除:

git config --global --unset http.proxy
git config --global --unset https.proxy

https免密码提交设置

一共有2种方式免密push,一种是在下载仓库的时候设置账号密码,二是添加凭据

预设账号密码

1、https方式,指定用户名和密码,git clone时指定:

git clone http://user:passwd@x.x.x.x/project.git

2、如果早就clone了项目,则重新设置一下remote url,具体命令:

git remote -v #可以查看目前的url
git remote set-url origin http://user:passwd@x.x.x.x/project.git

默认是添加了凭据的,如果需要删除用户登录认证信息,需要重设url,并删除用户的凭据:

# 针对系统
git config --system --unset credential.helper
# 针对当前用户
git config --global --unset credential.helper
# 针对当前仓库
git config --unset credential.helper

在Windows中添加凭据

目前知道有2种凭据:manager和store

manager凭据

配置credential.helper:
首先简单介绍一下credential.helper这个配置项的含义:这个配置项允许用户自行指定git所使用的凭据管理工具。
简单粗暴的办法就是直接配置credential.helper的值为manager(注意:当你需要在同一台机器上使用多个git账号这么搞就不行了,因为2个账号必定使用的不同的凭据),凭据的类型可以在git的配置文件种指定,优先级:仓库git配置>用户git配置>系统git配置

# 如果在仓库种,只针对当前仓库
git config credential.helper manager

# 针对当前的账户(系统用户家目录的配置)
git config --global credential.helper manager

再次尝试pull代码的时候会弹出窗口要求输入用户名密码(只需要输入这一次就ok了):

最后再次pull代码检查一下是否已经可以不用输入用户名密码了。

默认配置了凭据,如果需要删除用户的凭据

# 针对系统
git config --system --unset credential.helper
# 针对当前用户
git config --global --unset credential.helper
# 针对当前仓库
git config --unset credential.helper

store凭据

store凭据默认为:~/.git-credentials,也可以在配置的时候指定文件

添加凭据文件

vim ~/.git-credentials

# 保存以下内容 
https://username:passwd@github.com/Effordson/mydoc.git

为仓库设置凭据

# 只设置当前仓库
git config credential.helper store
# 全局配置
git config --global credential.helper store

以上是默认文件位置的,也可以指定文件

git config credential.helper store --file .git/.my-credentials

通过https端口创建ssh连接github服务器

Linux和Windows都可以使用此方法

ssh客户端配置文件
全局配置文件:/etc/ssh/ssh_config
用户配置文件:~/.ssh/config ,默认没有需手动创建

在 HTTPS 端口使用 SSH

来自GitHub官方文档: https://docs.github.com/cn/github/authenticating-to-github/troubleshooting-ssh/using-ssh-over-the-https-port

有时,防火墙会完全拒绝允许 SSH 连接。 如果无法选择使用具有凭据缓存的 HTTPS 克隆,您可以尝试使用通过 HTTPS 端口建立的 SSH 连接克隆。 大多数防火墙规则应允许此操作,但代理服务器可能会干扰。

GitHub Enterprise Server 用户:目前不支持经 SSH 通过 HTTPS 端口访问 GitHub Enterprise Server。

要测试通过 HTTPS 端口的 SSH 是否可行,请运行以下 SSH 命令:

$ ssh -T -p 443 git@ssh.github.com

Hi username! You've successfully authenticated, but GitHub does not
provide shell access.

如果这样有效,万事大吉! 如果无效,您可能需要遵循我们的故障排除指南。

故障排除指南: https://docs.github.com/cn/github/authenticating-to-github/troubleshooting-ssh/error-permission-denied-publickey

启用通过 HTTPS 的 SSH 连接
如果您能在端口 443 上通过 SSH 连接到 git@ssh.github.com,则可以覆盖您的 SSH 设置以强制与 GitHub 的任何连接均通过该服务器和端口运行。

要在您的 ssh 配置中设置此项,编辑位于 ~/.ssh/config 的文件,添加以下部分:

Host github.com
  Hostname ssh.github.com
  Port 443
  User git

您可以通过再次连接到 GitHub 测试此项是否有效:

$ ssh -T git@github.com

Hi username! You've successfully authenticated, but GitHub does not
provide shell access.

没有以上配置数据包格式:github.com的IP+{ssh数据包+22端口}

使用以上配置后数据包格式:ssh.github.com的IP+{ssh数据包+443端口}

使用SSH下载代码仓库

git clone git@github.com:Effordson/mydoc.git

查看网络连接:

[root@module t2]#netstat -ant 
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0     52 192.168.31.200:22       192.168.31.54:50280     ESTABLISHED
tcp        0      0 192.168.31.200:22       192.168.31.54:55125     ESTABLISHED
tcp        0      0 192.168.31.200:42812    18.141.90.153:443       TIME_WAIT
最后一条即为刚才连接GitHub仓库的网络连接
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在配置文件中修改了SSH端口号后,可能会发现修改并没有生效。这时候我们需要通过查看日志来分析问题所在。可以在日志文件路径中找到与SSH相关的日志文件,比如在/root/gitlab1/logs/sshd。在这些日志中,我们可以查看current日志,以了解当前SSH的情况。通常情况下,你会发现当前SSH监听的端口仍然是22,并没有因为配置文件的修改而改变。为了解决这个问题,我们需要手动修改容器中的SSH端口。可以按照以下步骤将默认端口改为我们设定的端口: 1. 使用命令docker exec -it gitlab /bin/sh进入gitlab容器。 2. 使用命令vim /assets/sshd_config编辑SSH配置文件。 通过这样的操作,我们可以将默认的SSH端口改为我们设定的端口。这样在使用git时,就可以使用新的端口进行连接了。\[2\] #### 引用[.reference_title] - *1* [ssh端口修改以及git报端口22连接失败](https://blog.csdn.net/m0_37400316/article/details/125987235)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [gitLab---docker部署时ssh更改端口完美解决方案](https://blog.csdn.net/chihaihai/article/details/122709431)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *4* *5* [git 修改ssh端口](https://blog.csdn.net/yhtgb/article/details/54379271)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Effordson

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值