Ubuntu18.04解决github提交代码Support for password authentication was removed 问题

  • 原因是:push以用户名+密码的方式不被支持
  • 1、Ubuntu安装ssh-agent和启动
  • 2、生成新的 SSH 密钥并添加到 ssh-agent
  • 3、将新的 SSH 密钥添加到 GitHub 帐户
  • 4、测试连接SSH
  • 5、切换本地project的协议


原因是: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里面的可以pom dependencies github support_ubuntu

  1. 打开 TerminalTerminalGit Bash。
  2. 粘贴下面的文本,替换为您的 GitHub 电子邮件地址。一路回车。
$ ssh-keygen -t rsa -C "your_email@example.com"

github里面的可以pom dependencies github support_ubuntu_02

  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。

github里面的可以pom dependencies github support_ssh_03

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

github里面的可以pom dependencies github support_github_04

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

github里面的可以pom dependencies github support_github_05

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

github里面的可以pom dependencies github support_ssh_06


github里面的可以pom dependencies github support_github_07


github里面的可以pom dependencies github support_ubuntu_08

4、测试连接SSH

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

github里面的可以pom dependencies github support_用户名_09


输入

$ 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


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。看看是不是成功了。^ - ^