多个开发人员如何 "cache" 他们的 Git 远程计算机上的个人访问令牌?

How can multiple developers "cache" their Git Personal Access Token on a remote machine?

在我们的团队中,我们需要直接在共享的远程机器上开发代码。我们在这台机器上有一个 GitHub 存储库,有时我们中的一个人需要通过 SSH 连接到远程机器,开发代码,并且可能将 from/push 拉到 GitHub回购。我们每个人都可以从 GitHub 生成 his/her 自己的个人访问令牌 (PAT),以便在执行 Git 操作时使用。

在我们自己的 PC 上这很好,因为我们使用 Git 凭据管理器 (GCM) 来缓存凭据(这非常安全,因为例如,需要使用 Windows 登录信息来访问信息)。

但是在 (Linux) 远程机器上,我们在 /home/user/repository 有一个 repo 的克隆,其原始远程设置为 https://github.com/team/blahblahblah 之类的东西。然后,经过一番搜索后,我们找不到一种干净的方法来获取 Git Credential Helper 存储多个用户的凭据(多个用户名及其相应的 PAK)。我们最终不得不每次都输入用户名和 PAK(是的,我们可以用超时缓存它,但这不是很有帮助)。

有了 GitHub SSH 远程,一个选项是每个人都可以在远程拥有自己的安全、受密码保护的 SSH 密钥,所以每次 A 想做 git,他们必须提供解锁 SSH 密钥的密码。他们只需要在 Git 配置上设置正确的作者姓名,以便读取正确的 SSH 密钥。

但我们正在寻找一种更简洁的方法来执行此操作。您知道这方面的任何特殊工具或机制吗?

如果您使用 SSH 而不是 HTTP,因此使用私钥而不是访问令牌,您可以使用 SSH 代理转发.

轻松实现此目的

简而言之:

  • SSH 代理是后台的一个程序运行,它将您的私钥保存在内存中,并根据需要通过本地“套接字”提供对它们的访问。
  • git 完全支持此机制,并且 GitHub 根据提供的密钥识别用户(您始终使用用户名“git@github.com”)
  • 当建立到远程服务器的 SSH 连接时,您可以要求“转发”您的本地代理(使用 command-line 上的 -A 选项或任何等效选项您使用的客户端)。
  • 这允许 远程 服务器上的程序在套接字上请求私钥信息,该套接字转发 通过 SSH 连接返回的请求到您的电脑。

由于转发代理仅在用户登录时可用,私钥本身不需要复制到服务器,这应该可以满足您的需求。