如何配置多个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 AWR报告生成过程出现多个实例记录分析
在一次生成AWR报告中,发现在"Instances in this Workload Repository schema"部分,出现了多个实例记录信息(host敏感信息被用host ...
- Sql Server之旅——第十一站 简单说说sqlserver的执行计划
我们知道sql在底层的执行给我们上层人员开了一个窗口,那就是执行计划,有了执行计划之后,我们就清楚了那些烂sql是怎么执行的,这样 就可以方便的找到sql的缺陷和优化点. 一:执行计划生成过程 说到执 ...
- maven 安装alipay-sdk包到本地及远程仓库
安装到本地:mvn install:install-file -DgroupId=com.alipay -DartifactId=sdk-Java -Dversion=*** -Dpackaging= ...
- Oracle Latch的学习【原创】
Latch详解 - MaxChou 本文以学习为目的,大部分内容来自网络转载. 什么是Latch 串行化 数据库系统本身是一个多用户并发处理系统,在同一个时间点上,可能会有多个用户同时操作数据库.多个 ...
- Python标准库(1) — itertools模块
简介 官方描述:Functional tools for creating and using iterators.即用于创建高效迭代器的函数. itertools.chain(*iterable) ...
- Linux多进程编程
进程的状态 Linux进程有7种基础状态(两种running算一种),除了traced都可以用$ps命令查看,$ps可以查看的进程状态如下,更多进程状态信息参见Linux Process VS Thr ...
- mysql全量备份脚本
#!/bin/bash# Program# use mysqldump to Fully backup mysql data per week!# History# PathBakDir=/data/ ...
- HashMap的key可以是可变的对象吗???
大家都知道,HashMap的是key-value(键值对)组成的,这个key既可以是基本数据类型对象,如Integer,Float,同时也可以是自己编写的对象,那么问题来了,这个作为key的对象是否能 ...
- TeX Live安装配置等默认目录
TeX Live默认目录情况: TEXDIR (the main TeX directory): !! default location: /usr/local/texlive/2015 ...
- 学习OpenStack之 (0):基础知识
vi 方向键出现字母问题解决方法 执行命令 sudo apt-get remove vim-common 执行命令 sudo apt-get install vim 鼠标被virtualbox捕获无法 ...