git中的ssh和https方式的使用(gitee为例)
在使用git管理代码,或者使用github,国内的码云(gitee)的时候,有两种方式可以使用,分别是https和ssh,以下均使用gitee为例。
ssh方式
配置ssh,如果不配置ssh的话,clone项目的时候会报错,原因是没有配置公钥。
Permission denied (publickey)
Could not read from remote repository.首先,进入用户目录,查看本地是否已经存在公钥文件。
cd ~/.ssh
ls如果显示文件夹不存在,则本地还没有生成密钥文件,则使用git提供的密钥生成工具进行生成。
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
注意,回车后有几次需要回车,第二部需要你设置密码,如果不设置直接回车,则以后在使用ssh方式拉取提交代码的时候不需要再输入密码。
完成后,用户文件夹下多出了一个.ssh文件夹,里面有两个文件,一个id_rsa 和id_rsa.pub文件,使用命令打开id_rsa.pub文件,复制内容
cat ~/.ssh/id_rsa.pub
然后粘贴到github或gitee上的公钥中,可以给项目添加公钥,也可以给自己的账号添加公钥,二者的区别官方的解释是:
项目的 sshkey 只针对项目,且我们仅对项目提供了部署公钥,即
项目下的公钥仅能拉取项目,这通常用于生产服务器拉取仓库的代码。 而用户的 key 则是针对用户的,用户添加了 key 就对用户名下的项目和用户参加了的项目具有权限,一般而言, 用户的key具有推送和拉取的权限,而项目的 key 则只具有拉取权限。
输入命令进行测试:
ssh -T git@gitee.com
如果返回 ”Hi gitee用户名xxxxxx......“ 说明配置成功了。
设置好了之后,然后拉取代码,第一次拉取的时候,会询问是否信任连接,yes就行了,就可以正常拉取,提交代码了,也不需要设置每次都输入账号和密码了。
注意,信任完gitee的连接后,.ssh文件夹里多出了一个known_hosts文件,这里就记录了gitee的相关连接信息。这里会有一个小问题,那假如我有多个git账号,比如:1,gitee账号,用于自己个人 2,gihub账号,用于公司开发,那么怎么配置多个密钥呢?
解决办法:1,生成多个密钥文件
ssh-keygen -t rsa -C 'xxxxx@company.com' -f ~/.ssh/gitee_id_rsa
ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/github_id_rsa2,在 ~/.ssh 目录下新建一个config文件,添加如下内容(其中Host和HostName填写git服务器的域名,IdentityFile指定私钥的路径)
# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa3,用ssh命令分别测试
$ ssh -T git@gitee.com
$ ssh -T git@github.comhttps方式
配置credential.helper,首先简单介绍一下credential.helper这个配置项的含义:这个配置项允许用户自行指定git所使用的凭据管理工具。SSH协议并不采用这里讨论的凭证存储。
首先,检查credential.helper配置,输入命令
git config -l|grep credential.helper
没有配置的话,显示为空,windows安装如果安装的是GitGUI的时候,默认是勾选manager的,credential.helper=manager,如果没有配置的话,每次拉取,提交都需要密码。使用以下命令配置:
git config credential.helper manager
再次尝试pull代码的时候会弹出窗口要求输入用户名密码(只需要输入这一次就ok了),以后就不需要再输入密码了,windows而言,这个凭据放在windows的凭据管理器中

整个过程可以这样描述:当配置credential.helper后,git在需要用户名密码时会首先向指定的凭据管理器查找凭据,如果凭据不存在(对应第一次pull),则弹窗提示用户输入用户名密码,然后凭据管理器会记录这个凭据;如果凭据存在(对应第二次pull),则直接使用该凭据进行对应的git操作。
注意:当你需要在同一台机器上使用多个git账号这么搞就不行了,因为2个账号必定使用的不同的凭据。
git中的ssh和https方式的使用(gitee为例)的更多相关文章
- Git中清除远程仓库HTTPS认证信息的方法
Git远程仓库同步时用户认证有两种方式:HTTPS.SSH,对应的Git仓库上有两个不同的链接地址. https方式使用账号和密码授权,简单易用,便于进行权限细分管理,而且防火墙一般会打开 http ...
- git 学习小记之记住https方式推送密码
昨天刚刚学了点git基础操作,但是不幸的是Git@OSC给出公告说尽量使用 https 进行操作.可是在用 https 进行 push 时,都需要输入帐号和密码. 各种百度谷歌之后在Git@OSC官网 ...
- git中https和SSH
1.在git中clone项目有两种方式:HTTPS和SSH,它们的区别如下: HTTPS:不管是谁,拿到url随便clone,但是在push的时候需要验证用户名和密码: SSH:clone的项目你必须 ...
- 【git】git中使用https和ssh协议的区别以及它们的用法
git可以使用四种主要的协议来传输资料: 本地协议(Local),HTTP 协议,SSH(Secure Shell)协议及 git 协议.其中,本地协议由于目前大都是进行远程开发和共享代码所以一般不常 ...
- git 使用https方式进行 pull、push代码免密
由于网络原因我用ssh方法拉取代码每次都提示远程服务连接失败,因此我用了https方式去拉去代码. 这种方式拉取代码每次操作都要输入密码,为了解决这个问题做了一下操作: 在命令行输入 git conf ...
- Git中如何利用生成SSH个人公钥访问git仓库
Git中如何利用生成SSH个人公钥访问git仓库方法(这里以coding平台为例): 1. 获取 SSH 协议地址 在项目的代码页面点击 SSH 切换到 SSH 协议, 获得访问地址, 请使用这个地址 ...
- Https方式使用Git@OSC设置密码的方式
Https方式使用Git@OSC设置密码的方式 62561_silentboy Zoker3 years ago member https方式每次都要输入密码,按照如下设置即可输入一次就不用再手输入密 ...
- git 远程仓库ssh方式
用ssh-keygen生成公匙和私钥 d:\c\learnc>ssh-keygen Generating public/private rsa key pair. Enter file in w ...
- [转]https方式使用git保存密码的方式
https方式每次都要输入密码,按照如下设置即可输入一次就不用再手输入密码的困扰而且又享受https带来的极速 设置记住密码(默认15分钟): git config --global credenti ...
随机推荐
- 2018 Multi-University Training Contest 5
(叹气.jpg) B.Beautiful Now 题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6351 题意:给一串长度为m的数字,k次任意交换其中 ...
- 7-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(TCP实现HTTP访问下载文件,明白底层如何实现的,地基稳才踏实)
看了好多文章.....唉,还是自己亲自动手用网络监控软件测试吧 先看这个节安装WEB服务器.....安装好以后就可以用HTTP访问电脑文件了 6-STM32物联网开发WIFI(ESP8266)+GPR ...
- odoo开发笔记--模型中常用的方法
create方法在数据表中插入一条记录(或新建一个对象的resource)格式:def create(self,cr,uid,vals,context={})参数:vals:待新建记录的字段值,是一个 ...
- cpu负载的探讨 (转)
文章出处:http://blog.chinaunix.net/uid-12693781-id-368837.html 摘要:确定cpu的负载的定义,帮助管理员设置cpu负载阀值,推测可能的导致cpu负 ...
- SQL Server性能优化(7)理解数据库文件组织
一.基本单位"页" SQL Server是用8KB的页来存储数据.物理I/O操作也是在页级执行.页的种类有很多,具体参考(MSDN).我们关注更多的是数据页的结构,包括三部 ...
- Java多线程同步集合--并发库高级应用
一.阻塞队列1.在多线程领域,所谓阻塞,在某些情况下会挂起线程,一旦条件满足,被挂起的线程又会自动被唤醒2.ArrayBlockingQueue(效率高)和LinkedBlockingQueue是两个 ...
- 百度2015校园招聘面试题回忆录(成功拿到offer)
引言 盼望着,盼望着……今年终于轮到我找工作了,还深深记得去年跟在师兄后面各种打酱油的经历,当时觉得找工作好难啊,怎么面一个败一个,以后还能找到工作不? 不过当时的失败也是理所当然的,那时候没有做任何 ...
- 多线程编程(六)-Executor与ThreadPoolExecutor的使用
使用Executors工厂类创建线程池 1.使用newCachedThreadPool()方法创建无界线程池 newCachedThreadPool()方法创建的是无界线程池,可以进行线程自动回收,此 ...
- WPF 数据绑定 使用Code First with Database
一.准备工作 1.开发工具 Visual Studio 2013 2.安装 Entity Framework 6 Tools for Visual Studio 2012 & 2013 来实现 ...
- 【IT笔试面试题整理】位操作
如何准备: Bit manipulation can be a scary thing to many candidates, but it doesn't need to be! If you're ...