GIT:如何管理本机的多个ssh密钥(多个远程仓库账号)
最近在学习git,首先推荐一个个人认为很不错的git教程,学习后,从git新手变成了git入门了,仍需继续努力。
廖老师的git学习教程(其他git基础知识点,本篇博客就不做介绍了,自己看教程学习吧,老师讲解很不错,通俗易懂):
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 。
这里是将自己遇到的一个问题,通过查阅资料,大部分内容转载网址: https://segmentfault.com/a/1190000005607713 ,非常感谢这位大神,在此也分享给其他爱好git的朋友。我们可能会需要在一台电脑上以不同的github账户去使用git,这时就需要去解决如何管理本机上的多个ssh key的问题了(情景:比如你有一个github网站远程仓库的账号,同时又有一个公司远程仓库的账号,为了便于不同仓库代码的pull和push,就需要配置多个ssh密钥了)。
生成新ssh key
如果我们电脑上已经存在了一个ssh key,那么我们需要在我们电脑上生成第二个你想在本电脑上使用的id_rsa,使用命令:ssh-keygen -t rsa -C "你的github账号"。
红色标注部分会提示你把新生成的id_rsa存放到哪里,此处默认会存放在c盘的用户名下的.ssh文件夹下(即你第一个github用户ssh key存放的目录),因此我们需要输入路径/c/Users/DodoMonster/.ssh(注意此路径是你的系统盘下用户目录安放ssh密钥的目录,请使用自己电脑上相对应的目录),最后我以“id_rsa_gman”重新命名了ssh key防止默认与已有的ssh key重复。

在输入了路径后,会提示你输入提交项目时输入的验证密码,不输则表示不用密码,这是为了防止别人随便在你的项目上push东西,所以最好还是输入以下你的密码。回车,再重复输入确认回车即可(一路回车也可以,此时没有密码)。
添加新ssh key
默认SSH只会读取id_rsa,所以为了让SSH识别新的私钥,需要将其添加到SSH agent
使用命令:ssh-add ~/.ssh/id_rsa_gman

如果报错:Could not open a connection to your authentication agent.无法连接到ssh agent;可执行ssh-agent bash命令后再执行ssh-add命令
配置config文件
查看.ssh文件中是否存在config文件
如果已存在则直接编辑config文件,命令:vim config #这是linux的命令,进入了vim界面后按a或i或A或I进入编辑模式,编辑完成后按esc键输入:wq 保存文件退出
如果不存在则需要创建config文件,命令:touch config,再对config文件进行编辑

对config文件进行配置填写:
#Default github user(DodoMonster@email.com)-这其实是注释
Host github #把默认的常用的github Host设为github.com较好
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_me
其中Host 后的名字可以随意方便自己记忆,但HostName必须为github.com。
# ************************************************
#second user(monster@qq.com)
Host monster
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
ps:HostName 是域名
测试是否配置成功
使用命令:
ssh -T git@github.com
ssh -T git@github
出现如图的欢迎语则为配置成功。
注意:配置完成后,在连接Host不是github.com的github仓库时,远程库的地址要对应地做一些修改,比如现在添加monster帐号下的一个仓库orderTicket,则需要使用如下命令这样添加:
git remote add test git@github:monster/orderTicket.git

而并非原来的git@github.com:monster/orderTicket.git(这样每次连接都会使用id_rsa与服务器进行连接)。
配置至此,大功告成!
另外注意:github根据配置文件的user.email来获取github帐号显示author信息,所以对于多帐号用户一定要记得将user.email改为相应的email(monster@mail.com)。
GIT:如何管理本机的多个ssh密钥(多个远程仓库账号)的更多相关文章
- 【Git】(1)---工作区、暂存区、版本库、远程仓库
工作区.暂存区.版本库.远程仓库 一.概念 1.四个工作区域 Git本地有四个工作区域:工作目录(Working Directory).暂存区(Stage/Index).资源库(Repository或 ...
- Git -- 本地 一个相同的新的分支 并 推送到远程仓库
(一).创建本地分支 git checkout -b 新分支名 执行该指令后,会在本地创建一个新分支,该分支是从当前分支上检出的,所以所有文件内容都和当前分支一模一样,这是正常的.创建成功后,将自动切 ...
- Git的忽略、分支、分支与主线的合并、远程仓库的操作
如果想了解 Git 以及一些基础命令的使用,请看我的另一篇博客: http://www.cnblogs.com/haojun/p/7797508.html 这篇博客会跟大家介绍一下怎么在提交的时候忽略 ...
- Git分支管理及常见操作
众所周知,使用Git分支,我们可以从开发主线上分离开来,然后在不影响主线的同时继续工作. 既然要使用Git分支,这里就涉及到Git分支的管理及常见操作,如列出分支,分支的创建,分支的删除,分支的合并等 ...
- Git入门——远程仓库及分支管理
关于本地版本库的操作,请见:Git入门--本地版本库操作 本篇提到的所有命令: 小结 前面提到,Git相对于传统的SVN有着很大的优势,其中之一就在于集中式系统中,版本库只能存在于中央服务器上:而在G ...
- git多个远程仓库
1. 前言 用GitHub管理自己的开源项目有几年了,最近一年更新得比较多,仓库也越来越多越来越大.有时候感觉GitHub太慢,尤其是最近感觉更为明显,于是萌生了再找个国内类似GitHub的代码托 ...
- 【学习总结】Git学习-参考廖雪峰老师教程五-远程仓库
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- git第一次提交代码到远程仓库
博客搬家了,本文新地址:http://www.zicheng.net/article/4 感谢支持 本操作说明是先有代码,后来创建git仓库,然后把本地代码提交到远程仓库的操作步骤: 1.初始化 在当 ...
- git 使用ssh密钥
一.查看仓库支持的传输协议 1.1查看仓库支持的传输协议 使用命令 git remote -v 查看你当前的 remote url root@zengyue:/home/yuanGit# git re ...
随机推荐
- Mac下使用tree命令
Mac下没有tree命令,但是可以通过brew进行安装,命令如下: brew install tree 装好后tree的用法和linux下的保持一致.参考:http://www.cnblogs.com ...
- 学习Linux最简单的方法
大多数初学者在刚刚接触Linux都会有非常陌生的感觉.往往会有一些疑惑和问题.而我们就沿着这些问题,从远及近,从宏观到微观来理解Linux的简洁和美丽. 问题1:Winows有注册表,为什么Linux ...
- winform MD5加密
byte[] result = Encoding.Default.GetBytes(this.tbPass.Text.Trim()); //tbPass为输入密码的文本框MD5 md5 = ne ...
- (转载)Java中对List集合内的元素进行顺序、倒序、随机排序的示例代码
1 import java.util.Collections; 2 import java.util.LinkedList; 3 import java.util.List; 4 5 public c ...
- flot中文详解
调用plot函数的方法如下: var plot = $.plot(placeholder, data, options) Data的结构: data应该是data series的一个数组: [ ser ...
- split使用和特殊使用(包括截取第一个字符后的数据)
javaScript中关于split()的使用 1.一般使用对一个字符串使用split(),返回一个数组 例子: var testArr = "1,2,3,4,5": var ...
- js处理json数据,java处理json数据
一.js处理json数据 处理办法之一是把本机json数据或远程返回json数据用eval函数,使之变成DOM对象. 例如: var people = { "programmers" ...
- JAVA练手--线程(Thread)
1. 查看线程是否还存活 package tet;public class kk extends Thread{ //1. 查看线程是否还存活 public void run(){ for(int i ...
- 去除tableView表头悬浮
UITableView设置为UITableViewStyleGrouped样式会出现多余间距,以前遇到过这样的问题,自己以为不难,只是一个知识点,也没太在意 ,今天又碰到了,发现自己把它给忘了,所以还 ...
- Java如何操作对象(bean)进行动态排序?
原文出自:https://blog.csdn.net/seesun2012 简介如题:Java如何操作对象(bean)进行动态排序?Java实体类(bean)动态排序? 原理:利用反射根据指定的属性值 ...