如何配置多个ssh key
上一篇简单学习了下怎样利用git bash上传文件到指定的github项目中,我们来回顾下。首先在本地安装好git,设置好用户名和邮箱(提交时的显示),接着我们生成SSH key把它添加到该项目owner账户的key setting中,表示本地可以读写该项目了,接着我们就可以愉快地clone和push了。当你修改了项目后,会显示你的信息,比如:

github根据配置文件的user.email来获取github帐号显示author信息,so这里的信息正是在global config设置时的user.email对应的github账户名,如果你设置的email没有注册过github,那么会显示global config设置时的user.name,如果没有global设置,可以在进入每个项目后单独设置name和email信息,设置方式如下:
$ git config user.name "hanzichi" //给自己起个用户名
$ git config user.email "abc@gmail.com" //填写自己的邮箱
设置完可以在该项目的.git文件夹的config文件中看到相应设置信息,这样就可以为每个项目设置不同的提交用户名了。需要注意的是,如果设置了global则以global优先,如果没有设置global则查看每个项目的设置(在.git的config文件中),如果还没有,则用unknown提交。
言归正传,本文主要要将的是如何设置多个SSH key。为什么要设置多个SSH key?一个github账户的后台可以添加多个ssh key(可以多人修改该项目),但是同一个ssh key只能添加到一个github后台上(同一个ssh key可以添加到不同的服务器上)。这也可以理解,毕竟ssh key相当于密码,同一个密码当然只能对应一个账户了。那如果本地要修改多个github账户下的项目呢?只能添加多个git用户了。举个栗子,这里有个项目,我要在本地对它作修改。首先,上文中获得的ssh key已经不能使用了,怎么办呢?
1、生成新的ssh key:
#新建SSH key:
$ cd ~/.ssh # 切换到C:\Users\Administrator\.ssh
ssh-keygen -t rsa -C "mywork@email.com" # 新建工作的SSH key
# 设置名称为id_rsa_work
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): id_rsa_work
我们打开.ssh文件夹可以发现生成了两个新的东西,id_rsa_work和id_rsa_work.pub,把公钥添加到对应github账户的后台key setting中,然后我们试着执行clone和push的命令,出错了:

2、新建config文件
这时我们需要在.ssh文件夹下新建个config文件(相当于一个映射文件),文件内容比如这样:
# 该文件用于配置私钥对应的服务器
# Default github user(first@mail.com)
Host github.com
HostName github.com
User git
IdentityFile C:/Users/xlianyu/.ssh/id_rsa
# second user(second@mail.com)
# 建一个github别名,新建的帐号使用这个别名做克隆和更新
Host github2
HostName github.com
User git
IdentityFile C:/Users/xlianyu/.ssh/id_rsa_work
在每次push的时候,本地的私钥都会和服务端(github)的公钥去匹配,如果一致就可以push了;而没设置config文件之前,本地的私钥都会读取id_rsa文件,很显然这是第一次设置时产生的私钥。我们可以测试一把,看看本地能不能通过SSH跟github2服务器通信了:
$ ssh -T github2
Hi FishLeong! You've successfully authenticated, but GitHub does not provide she
ll access.
3、修改具体项目的config文件
设置完了config 文件,我们试着重新clone文件:
git clone git@github.com:FishLeong/test.git
在push前,我们还需要修改下该项目.git文件夹下的配置文件config:
url = git@github.com:FishLeong/test.git #修改前
url = github2:FishLeong/test.git #修改后
github2字样和上面的设置是对应的。很显然,我们需要引导它去读取正确的私钥去和服务端保存的公钥匹配。因为示例是的两个服务端都是github,如果是别的服务器的话,则保存服务器的域名就可以了。
参考
2016-02-25:
关于提交信息,如果用了 global 命令,则用 global 的 user.email 提交,其次是 user.name。
$ git config --global user.name "hanzichi" //给自己起个用户名
$ git config --global user.email "abc@gmail.com" //填写自己的邮箱
如果希望每个项目用单独的 user,可以先删除 global config:
$ git config --global --unset user.name
$ git config --global --unset user.email
然后在项目中配置仅限于该项目的 user 信息:
$ git config user.name "hanzichi" //给自己起个用户名
$ git config user.email "abc@gmail.com" //填写自己的邮箱
可以用 git config -l 命令查看当前项目下的信息。
常用命令:
- git status
- git add .
- git commit -m 'add files'
- git push origin master
如何配置多个ssh key的更多相关文章
- 配置GitHub的SSH key
配置GitHub的SSH key 生成密钥对 打开git bash工具(Windows环境),Linux则直接打开命令行,执行下面的命令生成密钥文件 ssh-Keygen -t rsa -C &quo ...
- 配置github的SSH key及GitHub项目上传方式一——使用终端命令行
GitHub是一个开源的大仓库,我们经常从github上下载项目进行学习和研究,下面是一个完整的步骤——往GitHub上传一个新项目. 一.注册GitHub账号 1.注册GitHub账号,地址:htt ...
- git配置多个ssh key
随着工作的深入,我们通常都会有多个git账户.比如公司gitlab一个账户,github或gitee有一个账户.而平时我们又回通过 配置ssh公私钥认证的方式省去繁琐的登录远程仓库的操作,不同的git ...
- Mac下配置多个SSH KEY访问远程Git服务
第一步 生成对应的ssh key 1 后面输入你的用户名 或者 邮箱 2 输入一个独立的ssh key名字 区别之前的名字 第二步 编辑 config文件 在.ssh/目录下面 在config文件配 ...
- Git高级之配置多个SSH key
最近我们在代码托管平台上使用SSH的方式下拉代码,通常是用一个ssh key来拉取所有托管平台的代码,如码云,GitHub.GitLab等,但是总用一个不是太好.会有安全风险,这就需要为每个托管平台设 ...
- GitLab配置ssh key
一.背景 当前很多公司都选择git作为代码版本控制工具,然后自己公司搭建私有的gitlab来管理代码,我们在clone代码的时候可以选择http协议,当然我们亦可以选择ssh协议来拉取代码.但是网上很 ...
- SSH连接GitHub并配置ssh key
SSH连接GitHub并配置ssh key 配置git的ssh提交,主要需要以下三步: 1.设置Git的user name和email 2.生成ssh 3.配置git 的ssh key 一.设置Git ...
- git 配置ssh key
第一次生成 ssh key 进入ssh目录 cd ~/.ssh,再输入:ls ,查看文件,如果有.pub的文件,说明已有ssh key 如果没有, 则生成秘钥:ssh-keygen -t rsa - ...
- git ssh key配置
原文:https://blog.csdn.net/lqlqlq007/article/details/78983879 git clone支持https和git(即ssh)两种方式下载源码: 当使用 ...
随机推荐
- ORACLE 查看RMAN的备份信息总结
关于Oracle数据库的RMAN备份,除了邮件外,是否能通过其它方式检查RMAN备份的成功与失败呢?其实我们可以通过下面SQL脚本来检查某个时间段备份失败的记录: SELECT * FROM V$RM ...
- ORACLE查看数据文件包含哪些对象
在上篇ORACLE查看表空间对象中,我介绍了如何查询一个表空间有那些数据库对象,那么我们是否可以查看某个数据文件包含那些数据库对象呢?如下所示 SELECT E.SEGMENT_TYPE ...
- Mongodb Manual阅读笔记:CH8 复制集
8 复制 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读笔 ...
- Java高级编程之URL处理
Java URL处理 URL(Uniform Resource Locator)中文名为统一资源定位符,有时也被俗称为网页地址.表示为互联网上的资源,如网页或者FTP地址. 本章节我们将介绍Java是 ...
- 2、HDFS和Yarn的基础学习笔记
日志 --排错 .log:通过log4j记录的,记录大部分应用程序的日志信息 .out:记录标准输出和标准错误日志,少量记录 hdfs 常用shell -ls -put < ...
- 烂泥:高负载均衡学习haproxy之安装与配置
本文由秀依林枫提供友情赞助,首发于烂泥行天下 有关高负载均衡的软件,目前使用比较多的是haproxy.nginx和lvs.下面我们就开始学习haprxoy这款软件. 一.haproxy介绍 以下开始介 ...
- Virtualbox配置双网卡
hadoop内部的虚拟机群,使用Host-Only 因为我之前一直是把三台虚机配置成桥接网络,可以同时上网又可以互通,但有一段时间,网络一直不通畅,造成hadoop核心进程一直关闭. 最后为了稳定起见 ...
- [转]C#网络编程(基本概念和操作) - Part.1
本文转自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part1.aspx 引言 C#网络编程系列文章计划简单地讲述 ...
- MMORPG大型游戏设计与开发(part5 of net)
上一部分将服务器的具体代码的实现介绍给了大家,想必大家也了解到了服务器处理一次消息的复杂度.如果大家能够将各个过程掌握清楚,就会发觉其实整个逻辑与交互过程是比较清晰的.那么服务器与服务器之间的通讯,其 ...
- HTML常用标签跟表格
<html> --开始标签 <head> 网页上的控制信息 <title>页面标题</title> </head> <body& ...