原因是:push以用户名+密码的方式不被支持

自2021年8月13日以后,以用户名+密码的方式将不被支持。现在可以支持的方式有: OAuth、SSH Key或者GitHub App installation token) 。最便捷的方式就是采用ssh Key的方式了。1

1、Ubuntu安装ssh-agent和启动

由于openssh依赖于openssl库,所以在安装openssh前要先安装openssl库
Ubuntu默认安装了ssh client端但没有安装Server端,所以首先安装ssh-server服务。命令如下:

sudo apt-get update
sudo apt-get install openssh-server
sudo service ssh start

server启动后如果出现root连接时显示如下,表明ssh服务器拒绝了密码,可参考博文解决。

Permission denied, please try again.

2、生成新的 SSH 密钥并添加到 ssh-agent

以下步骤一定要参考GitHub帮助文档 GitHub Doc。
GitHub Doc

  1. 打开 TerminalTerminalGit Bash。

  2. 粘贴下面的文本,替换为您的 GitHub 电子邮件地址。一路回车。

$ ssh-keygen -t rsa -C "your_email@example.com"

产生SSH Key

  1. 进入路径查看密匙
    在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对。id_rsa是私钥,不能泄露出去。id_rsa.pub是公钥,可以放心地告诉任何人。
$ cd ~/.ssh && ls
id_rsa  id_rsa.pub
  1. 后台开启ssh-agent
$ eval "$(ssh-agent -s)"
> Agent pid 59566
  1. 将SSH 私钥添加到 ssh-agent
$ ssh-add ~/.ssh/id_rsa

3、将新的 SSH 密钥添加到 GitHub 帐户

以下步骤一定要参考GitHub帮助文档 GitHub Doc。
在这里插入图片描述

  1. 执行 gedit id_rsa.pub 打开公钥,复制其内容
    在这里插入图片描述
  2. 登录github注册或登录账号,点击页面的右上角登录头像,打开“settings”的“SSH Keys”页面

在这里插入图片描述

  1. 在用户设置侧栏中,单击 SSH 和 GPG 密钥。

在这里插入图片描述

  1. 点“New SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,点“Add Key”,你就应该看到已经添加的Key。如果要确认密码,输入登录密码即可。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、测试连接SSH

以下步骤一定要参考GitHub帮助文档 GitHub Doc。

在这里插入图片描述
输入

$ ssh -T git@github.com

测试一下通不通,通了显示如下:

Hi Hello! You've successfully authenticated, but GitHub does not provide shell access.

即可正常使用。
如果不行,就操作以下两步:

ssh-agent -s
ssh-add ~/.ssh/id_rsa 

如果出现git@github.com: Permission denied (publickey). ,参考此链接处理。

5、切换本地project的协议

可以采用命令行进行切换到SSH模式1

# 在本地的一个项目中打开git-shell,查看版本信息
$ git remote -v
origin  https://github.com/haibo-duan/geektime-study.git (fetch)
origin  https://github.com/haibo-duan/geektime-study.git (push)
#切换
$ git remote set-url origin git@github.com:haibo-duan/geektime-study.git
#再次查看
$ git remote -v
origin  git@github.com:haibo-duan/geektime-study.git (fetch)
origin  git@github.com:haibo-duan/geektime-study.git (push)


最后试一试git push。如果有提示,输入yes。看看是不是成功了。^ - ^


  1. GitHub Desktop解决github提交代码Support for password authentication was removed 问题 ↩︎ ↩︎

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐