如何配置多个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)两种方式下载源码: 当使用 ...
随机推荐
- BIEE11G常用函数及使用说明
BIEE常用函数使用手册 1.AGGREGATE AT 此函数根据指定的级别聚合列.使用AGGREGATE AT 可确保始终在关键字AT 之后指定的级别执行度量聚合,而无论WHERE 子句如何. 语法 ...
- js和jquery页面初始化加载函数的方法及先后顺序
运行下面代码.弹出A.B.C.D.E的顺序:A=B=C>D=E. jquery:等待页面加载完数据,以及页面部分元素(不包括图片.视频), js:是页面全部加载完成才执行初始化加载. <! ...
- Tomcat源码分析之—组件启动实现分析
Tomcat由多个组件组成,那么Tomcat是怎么对他们的生命周期进行管理的么,这里将从Tomcat源码去分析其生命周期的实现: Bootstrape类为Tomcat的入口,所有的组件够通过实现Lif ...
- 元组tuple
tuple和list的主要区别就是tuple里的元素的是不能改变的,即tuple时immutable的 #创建tuple >>> tupa = (12 , 'ed' , 34) &g ...
- CentOS系统在不重启的情况下为虚拟机添加新硬盘
一.概述 用过虚拟机的都知道,如果在系统运行的时候去给虚拟机添加一块新设备,比如说硬盘,系统是读取不到这个新硬盘的,因为系统在启动的时候会去检测硬件设备.但是我们也可能会遇到这样的情况,比如正在运行比 ...
- hw 要的是螺丝钉
日前突然接到华为HR的电话,叫我去面试。本来我的工作和工资收入等各方面在本地也还算可以,没有想要跳槽。但是本着去看看有没有更好机会的想法就去了。 9:30到了现场后,在那里等了很久,一个考官上来问了 ...
- 《Invert》开发日志02:游戏风格定型
声明:以下涉及到的<God of Light>.<Valiant Hearts : The Great War>.<Angry Birds 2>游戏截图均来自其Ap ...
- 第18章 图元文件_18.1 老式图元文件格式(wmf)
18.1 老式图元文件格式(wmf) (1)创建图元文件:HDC hdcMeta = CreateMetaFile(lpszFile); ①如果lpszFile为NULL则图元文件存储在内存中,如果指 ...
- ubuntu下crontab编辑方法的设定
在ubuntu下,首次编辑crontab计划任务的时候,会提示让选择编辑器.由于对nano编辑器不是很熟悉,若是选择nova编辑的话,会有些麻烦.可以重置编辑器,方法如下:[root@wang ~]# ...
- C语言:函数处理结构体
#include <stdio.h> #include <stdlib.h> #include <string.h> struct namect{ ]; //数组 ...