用于提取和克隆请求的git代理服务器



我需要在linux上创建一个代理服务器,它将接受来自特定私有回购的克隆、提取和签出请求。

我不想让用户直接访问github,也不想给他们任何github密码或密钥。

我的想法是在linux上创建一个代理服务器,用户可以使用密码或密钥访问该服务器,并将请求转发给repo并执行对用户隐藏的身份验证。

我没有这个的任何代码片段,因为我真的不确定是否/如何做到!

最重要的是,用户不应该知道github的详细信息,代理需要使用ssh/deploy密钥执行身份验证。

有人对我该怎么做有什么建议吗??

更新

非常感谢所有全面快速的建议,但有一些东西我忘了包括:

  1. 客户没有github帐户
  2. 我想有选择地控制(允许/阻止(他们使用我自己的独立于github的身份验证访问回购的能力

使用nodejs http代理似乎微不足道:

const username = 'mygitid';
const password = 'mygitpwd';
var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64');
var url = `https://github.com/dmygitid/some-repo.git`;
var httpProxy = require('http-proxy');

const ssl = {
key: fs.readFileSync(path.join(__dirname,'ssl','myssl.net.key'), 'utf8'),
cert: fs.readFileSync(path.join(__dirname,'ssl','myssl.net.crt'), 'utf8')
}
httpProxy.createServer({
ssl     : ssl,
target  : url,
secure  : false,
auth    : auth
}).listen(8111)

接受克隆、提取和签出的请求

这意味着只读访问?有四种简单的方法可以做到这一点:

访问问题/PR跟踪器是是tr>所有有权访问服务器的人否是单独发布/PR跟踪器否
可能性 可访问性身份验证
公开 everyone
只允许客户只读访问 在您的服务器上创建镜像存储库
在GitHub上创建镜像存储库 everyone否(但您只能允许某些GitHub用户使用(
制作您自己的HTTP代理 所有有权访问您的代理的人您的代理身份验证

最新更新