github 自从废除用户名密码直接登录之后,就乱了很多。直接用户名密码会提示:
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.fatal: Authentication failed for 'https://github.com/lvyekids/lvye-scouts-mini/'
现在提供 3 种登录方式。以下是 ubuntu 的操作方式。
1、SSH 登录
1、这种模式需要设置库为 git@github.com 的格式:
git remote set-url origin git@github.com:user/repo.git
2、复制 SSH 公钥
执行下述命令(如果~/.ssh
下有其它.pub
文件应该也是可以的):
more ~/.ssh/id_ed25519.pub
然后复制文件内容。
如果该文件不存在,使用下述命令生成一个(邮箱为你的 github 的登录邮箱,查看地址: github.com -> 用户头像 -> Settings -> Emails ):
ssh-keygen -t ed25519 -C 'your@email.com'
生成后再执行上面复制公钥动作
3、将公钥粘贴到 github 的设置中
打开 github.com -> 用户头像 -> Settings -> SSH and GPG Keys -> New SSH Key ,将上面复制的 SSH 公钥粘贴到 Key 框里,再起一个名字,建议为该电脑的名字。
注意,该设置只对该电脑有效。如果换一台电脑需要重复上述操作。也有一个方法就是将~/.ssh
下的id_ed25519
和id_ed25519.pub
两个文件都复制到新的电脑的同样位置。
2、token 登录
3、gcm 登录
gcm 是 git credential manager 的简称,用来管理 git 的登录信息。它本质上是一个密码管理器,在第一次输入 github 的用户名密码之后,后面每次都只需要输入 gpg 的管理密码:
1、下载、安装和配置 gcm :
wget https://github.com/GitCredentialManager/git-credential-manager/releases/download/v2.0.785/gcm-linux_amd64.2.0.785.deb
sudo dpkg -i gcm-linux_amd64.2.0.785.deb
git-credential-manager-core configure
上面的下载和安装文件里的版本号 2.0.785 可能随着时间更新。最新版本参考https://github.com/GitCredentialManager/git-credential-manager/releases/。
2、生成 gpg 和本地密码库
下面这一步会生成本地 gpg 密钥对,会提示你输入姓名(该姓名会后面用于用户名),其它的按照提示操作即可。还会提示你输入管理密码,这个管理密码要记住,以后每次需要登录信息时,可能会被要求输入管理密码:
gpg -gen-key
sudo apt install pass
pass init {your_username}
3、配置 gcm
其中export GPG_TTY=$(tty)
只对当前终端有效,因此需要放到你的~/.bashrc
或~/.zshrc
里。
export GPG_TTY=$(tty)
git config --global credential.credentialStore gpg
然后就可以进行 git 操作了,第一次操作会询问 git 的用户名密码。后面就不需要了,但可能会被要求提供 gpg 的管理密码。
Q. E. D.