git - 已弃用的普通用户和密码

标签 git github

我有几个项目在一些 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/

相关文章:

git - 如何结合使用 Git 和 Dropbox?

git - 当有人推送到 git 存储库时构建 jenkins 管道

git - 如何创建/添加到 .git/info/exclude 文件以忽略本地文件?

javascript - Lint 和 Prettier 存储库没有大规模合并冲突

git - 如何从本地存储库推送到 GitHub 和实时服务器?

git-p4 : No such file or directory

json - composer的 'package not available in stable-enough version'错误如何解决?

git - 在 Mac 上更改 Git 存储库下载路径

git - 为什么在 Github 上总是可以使用 "squash and merge"快速转发?

git - 在Docker容器上启动github