我有几个项目在一些 git 客户端中使用纯用户名和密码。
问题是 GitHub 不再支持用户名/密码身份验证。
我可以改变什么或者让它们发挥作用的最佳选择是什么?
最佳答案
TL;DR
一个PAT (personal access token)可以像密码一样使用 GitHub 作为您的用户进行身份验证。您可以将其用于 GitHub API 并使用 git 进行交互。
SSH允许您使用 ssh 协议(protocol)从 git 存储库克隆/推送/pull 。
Deploy keys就像 SSH 一样,但适用于单个存储库。
OAuth2可用于应用程序请求您访问 GitHub 的权限。
为什么它被弃用?
您不应该直接使用普通密码,因为
- 您需要以明文形式保存密码或对其进行加密,但在加密密码旁边键入加密 key ,从而使加密毫无用处。
任何有权访问您计算机的人(如果您感染了病毒或有人窃取了您的硬盘或类似情况),他们都可以读取您的 GitHub 密码。 - 您无法区分不同的应用程序,并且需要对每个应用程序使用相同的密码。这些应用程序中的任何一个都可能窃取您的 GitHub 密码。
- 如果您向应用程序提供用户名和密码,则无法限制权限,因为它们可以访问您的整个帐户。
您还有哪些其他选择?
帕特
从用户名/密码身份验证迁移到 GitHub 上其他身份验证的最简单方法是 PAT (personal access token) .
您可以在 Settings
> Developer Settings
下生成个人访问 token 点击 Generate new token
。然后,您可以选择范围来定义允许使用 token 的用途。
建议为每个应用程序创建一个具有最少权限的不同 token ,以便在它被盗时可以轻松撤销它。
您可以使用 token 而不是密码来与 GitHub 交互。
SSH
您还可以使用SSH to read/write from/to a repository .
首先,您需要 generate an SSH key以便使用它。
之后,您可以将其添加到 SSH and GPG keys
中单击 New SSH key
进入您的帐户设置部分.
此过程解释here .
在此处粘贴您的 SSH key 。
设置完成后,您可以使用它通过 SSH 访问存储库,而不会提示输入用户名/密码。
部署 key
如果应用程序要与特定存储库交互,则 deploy key可能是一个更好的主意。
部署 key 是仅对单个存储库有效的 SSH key 。
为了使用部署 key ,您需要 create those一开始。
您可以在 /settings/keys
下配置每个存储库的部署 key (https://github.com/<username>/<reponame>/settings/keys
)。然后您可以点击Add deploy key
,选择 key 的名称并粘贴 key 。
设置部署 key 后,应用程序可以从存储库中读取(如果您以这种方式配置,则可以写入)。
OAuth2
与 GitHub 通信的另一种方式是 using OAuth2 .
该应用程序会将您重定向(或打开浏览器)到 GitHub。您登录 GitHub 并授权应用程序访问它需要访问的任何内容。然后,GitHub 将您重定向到该应用程序,它可以访问您允许其访问的任何内容。
许多 GitHub 应用程序已经支持 OAuth2,所以这很好。
为了在您自己的应用程序中使用 OAuth2,您需要 create an OAuth2 application首先。您可以在 Settings
> Developer Settings
中执行此操作点击 Register a new application
.
程序可以ask to authorize it以便它可以访问该帐户。
关于git - 已弃用的普通用户和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66122786/