我需要在linux上创建一个代理服务器,它将接受来自特定私有回购的克隆、提取和签出请求。
我不想让用户直接访问github,也不想给他们任何github密码或密钥。
我的想法是在linux上创建一个代理服务器,用户可以使用密码或密钥访问该服务器,并将请求转发给repo并执行对用户隐藏的身份验证。
我没有这个的任何代码片段,因为我真的不确定是否/如何做到!
最重要的是,用户不应该知道github的详细信息,代理需要使用ssh/deploy密钥执行身份验证。
有人对我该怎么做有什么建议吗??
更新
非常感谢所有全面快速的建议,但有一些东西我忘了包括:
- 客户没有github帐户
- 我想有选择地控制(允许/阻止(他们使用我自己的独立于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跟踪器身份验证 | |
---|---|---|---|
公开 | everyone | 是否 | |
只允许客户只读访问 | 是tr> | 在您的服务器上创建镜像存储库 | 所有有权访问服务器的人否是 |
在GitHub上创建镜像存储库 | everyone | 单独发布/PR跟踪器否(但您只能允许某些GitHub用户使用( | |
制作您自己的HTTP代理 | 所有有权访问您的代理的人 | 否您的代理身份验证 |