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。
- 打开 TerminalTerminalGit Bash。
- 粘贴下面的文本,替换为您的 GitHub 电子邮件地址。一路回车。
$ ssh-keygen -t rsa -C "your_email@example.com"
- 进入路径查看密匙
在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对。id_rsa是私钥,不能泄露出去。id_rsa.pub是公钥,可以放心地告诉任何人。
$ cd ~/.ssh && ls
id_rsa id_rsa.pub
- 后台开启ssh-agent
$ eval "$(ssh-agent -s)"
> Agent pid 59566
- 将SSH 私钥添加到 ssh-agent
$ ssh-add ~/.ssh/id_rsa
3、将新的 SSH 密钥添加到 GitHub 帐户
以下步骤一定要参考GitHub帮助文档 GitHub Doc。
- 执行 gedit id_rsa.pub 打开公钥,复制其内容
- 登录github注册或登录账号,点击页面的右上角登录头像,打开“settings”的“SSH Keys”页面
- 在用户设置侧栏中,单击 SSH 和 GPG 密钥。
- 点“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
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。看看是不是成功了。^ - ^