我可以访问共享的远程机器来执行代码和存储数据,可以通过本地计算机通过SSH访问,但我在那里没有根权限。遥控器在许多用户之间共享。我通常将代码存储在我的个人GitHub帐户中,因此我希望在这台远程计算机中设置GitHub存储库。
在这台远程机器上设置GitHub身份验证的最安全方法是访问(推送、拉、取、克隆)特定(而且可能是私有的) GitHub存储库?
我已经想过并尝试过一些可能性:
以防万一,本地和远程机器分别运行Ubuntu、21.04和20.04。
发布于 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 10可以额外安装OpenSSH客户端,但是这个版本与PuTTY不兼容。windows版本使用命名管道和PuTTY的原因是只支持套接字。
发布于 2021-10-16 03:28:36
更多的研究使我得出结论,就目前而言,设置一个GitHub存储库部署密钥并将密码添加到ssh-agent是一个很好的选择。
部署密钥很方便,因为它将单个存储库隔离开来,而ssh-agent则是方便的,因为它将SSH密钥密码存储在内存中,直到ssh-agent被杀死。可以将ssh代理配置为在使用简单脚本注销后被杀死。
当然,我所说的“方便”是基于我的判断,考虑到安全和方便之间的权衡。这是一个很好的解决这个问题的方法。虽然作者没有具体考虑GitHub身份验证,但他们深入探讨了SSH的选项。他们不考虑ssh代理转发,但我已经放弃了它,因为它的内在风险。
https://security.stackexchange.com/questions/256024
复制相似问题