一、查看仓库支持的传输协议
1.1查看仓库支持的传输协议

使用命令 git remote -v 查看你当前的 remote url
`root@zengyue:/home/yuanGit# git remote -v`

root@zengyue:/home/yuanGit# git remote -v
origin https://github.com/seventeen71/yuan (fetch) #1
origin https://github.com/seventeen71/yuan (push) #2
origin git@github.com:seventeen71/yuan.git (push) #3

1、#2处的地址都是以https开头的,表示https传输,意味着你每次都要输入讨厌的username、password

作者本人的已经设置好了ssh传输,在#3处:地址是git开头则表示是git协议

提示:完全设置好push模式的话应该是这样

root@zengyue:/home/yuanGit# git remote -v
origin https://github.com/seventeen71/yuan (fetch)
origin git@github.com:seventeen71/yuan.git (push) #4

4处这样当你git push origin master时就不需要输入讨厌的密码了,下面讲如何去设置

1.2检查本机是否已有SSH密钥

在 ~/.ssh目录下查看是否存在如下两个文件:~宿主目录一般为 /home/user(作者是zengyue) /home/zengyue

root@zengyue:~/.ssh# ls
id_rsa id_rsa.pub

如果不存在id_rsa id_rsa.pub 两个文件的话:

二、生成SSH密钥
2.1 ~/.ssh目录无密钥对从这儿开始

2.1.1 使用命令: ssh-keygen 来创建
`root@zengyue:~# ssh-keygen -t rsa -C "your_email@youremail.com"` 邮件地址为你注册github的地址

Creates a new ssh key using the provided email # Generating public/private rsa key pair.

Enter file in which to save the key (/home/zengyue/.ssh/id_rsa):

这儿让你确认密钥目录,直接Enter回车就好:

Enter same passphrase again: [Type passphrase again] 接着让你输入及确认密码,然后就生成了密钥对。

出现下面提示说明OK了

Your public key has been saved in /home/zengyue/.ssh/id_rsa.pub.

The key fingerprint is: # ............ your_email@youremail.com

现在你可以在你的 ~/.ssh 目录看是否有id_rsa id_rsa.pub 两个文件

2.2 github仓库中添加公钥

2.2.1 查看复制本地公钥:cat id_rsa.pub 或者 vim id_rsa.pub 打开直接copy
记得一点都不能省略从 ssh-rsa 开始 ........youre@email.com结束

root@zengyue:~/.ssh# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCbCLmkVonQAFjAgQVY7vH86NIsgw1kDV3dDYRXdmWoYSZ3gY4OEgzCqm8GWXRr+wNFUsSwhMmUabtEfRGGKlP/z2TBMzXFkcJ18zLAWXtgWWUH73tVfxXg+sdFpKhY0ppDYdU9Amk8ljVsge8+pKHVluk0ReBNtFsbp1w/seyrfUqsjigsnQHWeSPBns3CD7hs++7BXW5Mv4SH+ap30N+2tFBlqSuzitwLJCFed9isSFq2UQ4wiX25rs+eYpSloMY9kClMVVYuXN860EKCyF5V1ThS/TOcMoxDhGclDBoItS/oeTDGwopSTrsm5CFyUJFAd3qDYJ+yVy5fycVYfb6x youre@email.com

2.2.2 登陆你的github帐户。点击你的头像,然后

Settings -> 左栏点击 SSH and GPG keys -> 点击 New SSH key

2.2.3 将复制的公钥粘贴到key文本域,title随便起名,再点击Add key

2.2.4 然后回到linux下确认:命令 ssh -T git@github.com

root@zengyue:~/.ssh# ssh -T git@github.com

Hi xxx! You've successfully authenticated, but GitHub does not # provide shell access. 看到这个你就成功了。

2.2.5 调整remote url

命令 git remote -v 查看,详细见文章开头

root@zengyue:/home/yuanGit# git remote -v
origin https://github.com/seventeen71/yuan (fetch)
origin https://github.com/seventeen71/yuan (push)

如果你的是这样,意思就是现在只有https传输,还需要输入username /password

输入命令:

git remote set-url origin git@github.com:[你的账户]/[你的github仓库].git

如下图进入你的仓库,点击1处,然后出现在2处的就是git协议地址了,

复制它拼接到命令git remote set-url origin 后面

git remote set-url origin git@github.com:someone/repository.git

三、二的最后几个部分这么麻烦

你还可以去仓库的 .git 目录下修改conf文件
前面我们说过了,每一次提交git都会最后来这个文件找各种信息,下图的 13 到15行就是,去你的github仓库复制过来配置到这儿

 11
12 [remote "origin"]
13 url = git@github.com:s--enten--/--an.git
14 fetch = +refs/heads/*:refs/remotes/origin/*
15 pushurl = git@github.com:s--enten--/--an.git.git
16 [branch "master"]
17 remote = origin
18 merge = refs/heads/master

当然你还可以使用git remote --help

       git remote set-url [--push] <name> <newurl> [<oldurl>]
git remote set-url --add [--push] <name> <newurl>
git remote set-url --delete [--push] <name> <url>

git remote set-url --push origin <你的github仓库url>

这样去设置解决也是可以哒!

当然如果你遇到如下问题:去我这篇博客找吧!

执行git clone git@github.com:accountName/repository.git命令时不出错,

运行git push时出错,提示如下

Permission denied(publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.

git 使用ssh密钥的更多相关文章

  1. Git 使用SSH密钥操作

    git使用ssh密钥 git支持https和git两种传输协议,github分享链接时会有两种协议可选: git协议链接图例 : ↓ https协议链接图例:↓ git使用https协议,每次pull ...

  2. Git设置ssh密钥

    前提条件是,公司的gitlab,运维没有关闭ssh的权限获取,或者叫运维开通那个ssh权限,生成的公钥要给运维那边一个!这样设置是可以成功 一.创建ssh key 1.在客户端查看有没有密钥 cd ~ ...

  3. git使用ssh密钥和https两种认证方式汇总(转)

    在版本库的SSH方式和HTTPS方式是不同的,具体来说就是url信息的不同,但是,实际的认证机制也是不同的.当建立了本机密钥之后,使用ssh方式实际上是不需要再次认证的,而https则每次需要输入密码 ...

  4. git使用ssh密钥(转)

    git使用https协议,每次pull, push都要输入密码,相当的烦.使用git协议,然后使用ssh密钥.这样可以省去每次都输密码. 大概需要三个步骤:一.本地生成密钥对:二.设置github上的 ...

  5. git使用ssh密钥

    1.查看本地是否有密钥对,如果存在就删除cd ~/.sshid_dsa id_dsa.pub 2.重新生成密钥对ssh-keygen -t rsa -C "your_email@yourem ...

  6. Git生成ssh密钥指定文件

    ssh-keygen 使用的时候可以直接使用 -f 参数 指定密钥保存文件,省去后面生成成功后再提示选择保存文件: ssh-keygen -t rsa -C "abc@example.com ...

  7. git 配置 SSH密钥

    1.登录用户 $ git config --global user.name "geekfeier" $ git config --global user.email " ...

  8. Git生成SSH密钥

    git config --global user.name "yangjianliang"配置用户名 git config --global user.email "52 ...

  9. 报错 Please make sure you have the correct access rights and the repository exists (git 添加ssh密钥 )

    1.设置Git的user name和email $ git config --global user.name "wubaiwan" $ git config --global u ...

随机推荐

  1. Spring AOP的实现研究

    1. 背景 在前文Spring IOC容器创建bean过程浅析已经介绍了Spring IOC创建初始化bean的大致过程.现在对Spring的AOP实现机制进行研究分析. 2. 名词与概念 名词 概念 ...

  2. Django-组件拾遗

    Django的缓存机制 1.1 缓存介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候 ...

  3. Robberies HDU - 2955

    直接说题意吧.(什么网友bb了半天题都说不清楚) 给了  P  表示大于这个概率一定被抓住.则P表示被抓住的概率.N表示现在有的银行,pi表示被抓的概率嘛. 然后,就看数学了.肯定不能算被抓的概率啊. ...

  4. Guide to Porting MetaMask to a New Environment

    https://github.com/MetaMask/metamask-extension/blob/develop/docs/porting_to_new_environment.md MetaM ...

  5. Linux 之 rsyslog 系统日志转发

    一.rsyslog 介绍 ryslog 是一个快速处理收集系统日志的程序,提供了高性能.安全功能和模块化设计.rsyslog 是syslog 的升级版,它将多种来源输入输出转换结果到目的地,据官网介绍 ...

  6. leetcode 51. N-Queens 、52. N-Queens II

    51. N-Queens 使用isValid判断当前的位置是否合法 每次遍历一行,使用queenCol记录之前行的存储位置,一方面是用于判断合法,另一方面可以根据存储结果输出最终的结果 class S ...

  7. java 适配器模式(adapter pattern)

    适配器就是一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配. 场景:电脑读取内存卡中的内容,内存卡是没有办法直接插在电脑的USB接口上,那就不需要一个转换器. 下面的例子实现了 ...

  8. mysql编码问题:

    在my.ini文件改为: [client]default-character-set = utf8port=3306 [mysql] default-character-set=utf8 [mysql ...

  9. python 数据结构 - 栈

    如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10293388.html 欢迎关注小婷儿的博客: 有问题请在博客下留言或加作者微信:t ...

  10. linux下模拟一个木马程序运行过程

    预备知识: 将一个程序放入到后台,悄悄的执行 ./xxx.sh & 进程: 用户进程:由用户来管理 系统进程:由系统内核自行管理 系统中的每个进程,都有一个位置的ID,这就是pid,而且每次启 ...