本文主要是介绍github配置ssh密钥连接设置好后仍旧出错,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
前段时间配置ssh到GitHub,可是配置后还是用不了拉取什么的操作,后面查阅资料找到原因了,故分享出来
查看、开启ssh服务
首先先提供下在服务器上查看ssh服务状况的代码
-
查看ssh服务的开启状态
ps -e|grep ssh
若中断出现sshd则表明系统已经安装ssh-server,否则则需要安装
sudo apt-get install openssh-server
-
启动ssh服务
sudo /etc/init.d/ssh start
配置好GitHub密钥后出现Permission denied
配置过程就不赘述了,简单来说如下:复制公钥内容到自己的Github账户中。点击Github右上角账户图标→Settings→SSH and GPG keys→New SSH key,在Key一栏粘贴公钥内容
设置密钥的话一般有默认和自定义两种方式
默认创建id_rsa
$ ssh-keygen -t rsa
自定义
$ ssh-keygen -t rsa -C “your email” -f id_rsa_xx
如果出现Permission denied的话,就是自定义了密钥名字/路径,但没有执行命令密钥添加到SSH认证代理中。
可以输入以下命令验证是否生成了密钥以及是否有添加到SSH认证代理中
ssh-add -l -E sha256
# 如果配置失败,则没有任何输出;如果配置成功,则会输出类似以下内容
# SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ …… (RSA)
除了通过ssh-add的方式外,也可以通过设置config
文件让SSH认证代理能找到这个密钥文件
vim ~/.ssh/config
# 打开(如果没有就创建一个)config文件,并输入以下内容。
Host github.comHostName github.comIdentityFile ~/.ssh/github_auth # 这里输入你的密钥路径
Support for password authentication was removed …
在配置好SSH后,进行git操作时,仍要求输密码,即使输入了正确的账户和密码,还是报错:
出错的原因在于:本地仓库在clone时使用的是HTTPS URL,故该仓库此时的remote协议会是HTTPS协议,然而SSH密钥连接只支持SSH URL,不支持HTTPS URL,故会要求输账户密码。
以下命令可以查看到仓库的remote协议是HTTPS协议:
git config --get remote.origin.url
# 如果输出类似以下内容,则说明remote协议是HTTPS协议
# https://github.com/xxx/xxx.git
# 也可以查看仓库内的.git/config文件,查看url是git协议还是https协议。
# [remote "origin"]
# url = https://github.com:YOUR_ACCOUNT/YOUR_PROJECT.git
# fetch = +refs/heads/*:refs/remotes/origin/*
需要将remote协议从HTTPS协议修改为GIT协议。在本地仓库路径下输入以下命令:
git remote set-url origin git@github.com:xxx/xxx.git
这篇关于github配置ssh密钥连接设置好后仍旧出错的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!