首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在共享远程计算机中建立GitHub存储库的安全方法

问在共享远程计算机中建立GitHub存储库的安全方法
EN

Security用户
提问于 2021-10-12 18:23:46
回答 2查看 273关注 0票数 0

我可以访问共享的远程机器来执行代码和存储数据,可以通过本地计算机通过SSH访问,但我在那里没有根权限。遥控器在许多用户之间共享。我通常将代码存储在我的个人GitHub帐户中,因此我希望在这台远程计算机中设置GitHub存储库。

在这台远程机器上设置GitHub身份验证的最安全方法是访问(推送、拉、取、克隆)特定(而且可能是私有的) GitHub存储库?

我已经想过并尝试过一些可能性:

  • 在远程服务器中,使用登录名和个人访问令牌访问回购。这是不好的,因为令牌可以被拦截,它将允许访问我的所有回复。
  • 在远程服务器中,使用添加到远程计算机ssh代理中的部署键访问回购。我不确定ssh特工的安全。其他用户,非根用户也可以像我一样使用我的ssh代理吗?
  • 在远程服务器中,使用部署密钥访问repo,但不将其添加到ssh代理,即每次输入密码。
  • 在本地机器上设置SSH密钥(GitHub身份验证或部署密钥),并使用SSH代理转发通过ssh连接到远程。这似乎很糟糕,因为它允许一个人在连接时使用我的全部私有SSH密钥来模拟我。此外,在访问ssh代理时,我无法要求标准ssh代理转发请求任何确认.这是我在Unix & Linux上问的一个问题。

以防万一,本地和远程机器分别运行Ubuntu、21.04和20.04。

EN

回答 2

Security用户

发布于 2021-11-09 11:49:07

这取决于用例。

来自公共存储库的

部署:

在这种情况下,最好的选择是使用HTTPS,因为不需要凭据。

来自私有存储库的

部署:

当您需要从私有回购进行部署时,必须配置部署密钥。应该只允许这些密钥读取存储库(没有写权限)。

远程服务器上的

开发(读/写访问):

在默认配置中,ssh代理转发仍然是一个安全问题。

PuTTY和OpenSSH在代理转发方面增加了很多功能,并且根据客户端、配置和操作系统的不同,代理转发比在远程服务器上使用密码保护的私钥更安全。

重要!这种组合只适用于linux机器!(参见有关windows的说明,macos未测试)。

如果使用代理转发,则必须使用ssh-askpass或fido2令牌保护私钥。

推荐的方法是将PuTTY与OpenSSH代理结合使用。在最近的版本中,PuTTY能够检测和减少欺骗攻击。

当使用PuTTY>=0.76时,您应该使用禁用“琐碎”身份验证(仅SSH-2)。此选项可在"Connection -> SSH -> Auth“下找到。在较早的版本(>0.71)中,您可以使用信任σ来检测欺骗攻击。

不应该使用Pageant (PuTTY的代理),因为它不支持fido2令牌或ssh-askpass。这就是OpenSSH代理进来的地方。

您只需启动ssh代理(如果它尚未启动)。当PuTTY启动时,它可以使用OpenSSH代理而无需进一步配置。

使用此设置,您必须确认私钥的每次使用,并且不可能滥用或欺骗转发代理。

Windows上的注记:

因为Windows 10可以额外安装OpenSSH客户端,但是这个版本与PuTTY不兼容。windows版本使用命名管道和PuTTY的原因是只支持套接字。

票数 1
EN

Security用户

发布于 2021-10-16 03:28:36

更多的研究使我得出结论,就目前而言,设置一个GitHub存储库部署密钥并将密码添加到ssh-agent是一个很好的选择。

部署密钥很方便,因为它将单个存储库隔离开来,而ssh-agent则是方便的,因为它将SSH密钥密码存储在内存中,直到ssh-agent被杀死。可以将ssh代理配置为在使用简单脚本注销后被杀死。

当然,我所说的“方便”是基于我的判断,考虑到安全和方便之间的权衡。这是一个很好的解决这个问题的方法。虽然作者没有具体考虑GitHub身份验证,但他们深入探讨了SSH的选项。他们不考虑ssh代理转发,但我已经放弃了它,因为它的内在风险。

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/256024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档