Git配置多个github账号免密登录
在公司开发中,有时候会存在公司账户跟私人账户共存,并随时需要切换的情况,这种情况下git可以配置多个ssh-key,无缝切换账号。
假如有两个github账号,一个是私人github账号,一个是公司github账号
私人账号:
- github用户名:my
- email:convict@qq.com
公司账号:
- github用户名:company
- email:convict.yellow@work.com
一、在用户目录下的.ssh目录下生成秘钥与公钥
如果用户目录下没有.ssh目录,则需要新建一个
cd ~/.ssh
ssh-keygen -t rsa -f id_rsa_my
ssh-keygen -t rsa -f id_rsa_company
一路回车即可
- 注:国内很多博客都会带上
-C "xxx邮箱"这个参数,但其实-C参数是用来做秘钥注释的,以便知道这个秘钥到底是干嘛的。填个邮箱进去可以当成是备注,但不是必须,你也可以填个我是世界首富
上面ssh-keygen 命令参数:
- -t: 指定生成
rsa类型秘钥 - -f: 指定生成秘钥的名字,可以不指定该参数,默认就会生成2个文件:私钥
id_rsa,公钥id_rsa.pub。由于需要生成两对私钥公钥,因此需要指定-f,否则生成两次后,私钥公钥会覆盖
上面的命令调用完后会生成四个文件:
- id_rsa_my
- id_rsa_my.pub
- id_rsa_company
- id_rsa_company.pub
二、将公钥配置到对应的github账号中
公钥即.pub文件可以直接用文本打开,内容粘贴到github的 Settings -> SSH and GPG keys -> New SSH Key,Title随便起,自己能认出来即可,Key里面填写复制的.pub里的内容,这样公钥就配置好了

三、创建config文件
在.ssh目录下创建config 文件,git通过这个文件才知道哪个私钥去对应哪个公钥
touch config
config文件内容:
# my
Host my
HostName github.com
IdentityFile ~/.ssh/id_rsa_my
# company
Host company
HostName github.com
IdentityFile ~/.ssh/id_rsa_company
config文件部分参数含义,仅做记录
# Host: 主机别名
# HostName: 托管平台域名地址,如github.com
# IdentityFile: 该Host私钥文件
# User: 托管平台用户名
# Port: 端口号,可不填(如果不是默认22号端口则需要指定)
# PreferredAuthentications publickey
四、测试ssh-key是否连通
ssh -T git@my
ssh -T git@company
成功的情况下会返回:
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
此时私钥 和 公钥 都配置正常了
五、测试clone不同github仓库
此时测试一下clone私人git仓库,必须使用SSH链接
SSH链接格式为:
git@github.com:用户名/仓库名.git
比如下面例子:
git@github.com:convict/my-repo.git
要clone这个仓库,需要进行改动,应使用:
git clone git@my:convict/my-repo.git
即把github.com 换成my,此时clone成功,同理需要clone公司账户下的仓库,需要把github.com 换成company即可
如果直接使用复制下来的链接git clone git@github.com:convict/my-repo.git,会clone失败:
Cloning into 'test'...
Warning: Permanently added the RSA host key for IP address '13.250.177.223' to the list of known hosts.
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
解释:
- 在SSH中,
@与:之间就是Host,因此在git clone git@github.com:convict/my-repo.git中,Host就是github.com,但在前面配置的config文件中,指定了两个Host,分别为my与company,而没有一个加github.com的Host!这是尤其需要注意的。 - 使用
git clone git@my:convict/my-repo.git时,会在config中找到一个值为my的Host,接着到其HostName上找到与其私钥对应的公钥的仓库地址。在本例中,就是根据其私钥id_rsa_my,在github.com托管平台上,匹配对应的公钥,然后匹配到convict/my-repo.git这个仓库。
六、单账号ssh免密登录
单账号跟多账号的操作步骤基本一致,但如果仅仅是一个账号配置免密登录,可以省略更多步骤,请看我的另一篇文章:
https://www.cnblogs.com/convict/p/14888283.html
Git配置多个github账号免密登录的更多相关文章
- Git配置用户信息和SSH免密
一.配置用户信息 1.查看配置信息 # 查看所有配置 $ git config -l/--list # 查看系统配置 $ git config --system -l/--list # 查看用户配置 ...
- GIT生成SSH-KEY公钥放到服务器免密登录
在使用git时老是碰到在push的时候提示没有权限的问题,那么现在咱们就来创建ssh-key来免密登录.我们来看看如何配置服务器端的 SSH 访问. 本例中,我们将使用 authorized_keys ...
- 【Git的基本操作九】ssh免密登录
SSH免密登录 1. 进入用户家目录 cd ~ 2. 删除原有的 .ssh 目录 rm -r .ssh 3. 运行命令生成 .ssh 目录 ssh-keygen -t rsa -C github或gi ...
- Git配置ssh免密登录
一.在用户目录下的.ssh目录下生成秘钥与公钥 如果用户目录下没有.ssh目录,则需要新建一个 cd ~/.ssh ssh-keygen -t rsa 一路回车即可 注:国内很多博客都会带上-C &q ...
- linux免密登录配置
第一步:安装openssh-clients yum install -y openssh-clients.x86_64第二步:生成密钥 ssh-keygen第三步:拷贝公钥到其他机器 ssh-copy ...
- jsch配置sftp服务器ssh免密登录
前期对接了一个通过ssh免密登录的需求,是基于原先密码登录sftp服务器的代码上进行改造,实际上代码改动量非常少,趁此机会对自己整理的资料做一下总结. 1. 什么是SFTP SFTP是一个安全文件传送 ...
- 【FATE】设置虚拟机固定IP以及免密登录
一.前期准备 1.VMWare上新建三个Centos7的虚拟机 2.VMWare虚拟机的三种联网方式 1.桥接模式 -- 桥接: 默认使用VMnet0 这一种联网方式最简单,在局域网内,你的主机是怎么 ...
- CentOS下SSH远程免密登录服务器
.5服务器上配置,通过ssh远程免密登录192. 1.安装SSH,此处省略 2.生成公钥和私钥,生成的秘钥默认在/root/.ssh/文件夹里面 [root@localhost ~ ::&&a ...
- 版本管理·玩转git(远程仓库配置和配置公钥免密登录)
git系列的最后一部分内容,我们先来看看如何查看远程仓库. 输入 git remote -v 我们还可以删除远程库,输入 git remote remove origin 删除后再次查询,信息为空. ...
随机推荐
- python selenium + web自动化,切换到新的窗口,元素定位不到?
问题描述: 自动化由首页切换到分页面,打开了一个新的窗口,不过,定位不到这个窗口的元素,通过开发者工具是可以查到这个元素的 原因是: 因为窗口句柄还停留在上一个页面,所以导致无法定位元素.报错 &qu ...
- webSocket 使用 HttpSession 的数据配置与写法
1.前言 webSoket 无法获取 HttpSession ,使用就更谈不上了 !!! 2解决过程 使用 configurator 注入即可 (1) 配置一个类 1 package cn.c ...
- LINUX学习-Mysql集群-多主一从备份
基本原理:从服务器开启两个线程,一个备份主1,一个备份主2. 一.准备 主1:192.168.88.20 主2:192.168.88.30 从:192.168.88.40 两个主服务器开启binlog ...
- vue中form 表单常用校验封装(async-validator)
新建一个js校验文件validate.js export const regular = { // 验证自然数 naturalNumber: /^(([0-9]*[1-9][0-9]*)|(0+))$ ...
- hyperf 如何对AMQP消息进行手动消费?
转发自白狼栈:查看原文 在使用 hyperf 官方自带的 AMQP 队列时你会发现,不需要我们再额外启动进程对消息进行消费.这是因为默认情况下,使用 @Consumer 注解时,hyperf 会为我们 ...
- 灵雀云入选Gartner 2020中国ICT技术成熟度曲线报告,容器技术处于顶峰
近日,全球权威咨询分析机构Gartner发布了"2020中国ICT技术成熟度曲线(Hype Cycle for ICT in China, 2020 )"报告,灵雀云作为国内容器和 ...
- MASA Framework - 整体设计思路
源起 年初我们在找一款框架,希望它有如下几个特点: 学习成本低 只需要学.Net每年主推的技术栈和业务特性必须支持的中间件,给开发同学减负,只需要专注业务就好 个人见解:一款好用的框架应该是补充,而不 ...
- Feed流系统重构-架构篇
重构,于我而言,很大的快乐在于能够解决问题. 第一次重构是重构一个c#版本的彩票算奖系统.当时的算奖系统在开奖后,算奖经常超时,导致用户经常投诉.接到重构的任务,既兴奋又紧张,花了两天时间,除了吃饭睡 ...
- MATLAB绘图入门
%%%1.运算符:(1).% mean() -->平均值 1.对于一个数组,mean(数组名)则返回均值2.对于一个矩阵,mean(数组名,1或2) 1代表返回矩阵每列的平均值 2代表返回矩阵每 ...
- [Eclipse插件] 编辑插件IndentGuide
IndentGuide插件 将可配置的缩进指导线添加到Eclipse文本编辑器 如下图