上一篇简单学习了下怎样利用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_workid_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,如果是别的服务器的话,则保存服务器的域名就可以了。

参考

  1. git.md
  2. git初体验(七)多账户的使用
  3. 在GitHub多个帐号上添加SSH公钥
  4. git生成ssh key及本地解决多个ssh key的问题

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的更多相关文章

  1. 配置GitHub的SSH key

    配置GitHub的SSH key 生成密钥对 打开git bash工具(Windows环境),Linux则直接打开命令行,执行下面的命令生成密钥文件 ssh-Keygen -t rsa -C &quo ...

  2. 配置github的SSH key及GitHub项目上传方式一——使用终端命令行

    GitHub是一个开源的大仓库,我们经常从github上下载项目进行学习和研究,下面是一个完整的步骤——往GitHub上传一个新项目. 一.注册GitHub账号 1.注册GitHub账号,地址:htt ...

  3. git配置多个ssh key

    随着工作的深入,我们通常都会有多个git账户.比如公司gitlab一个账户,github或gitee有一个账户.而平时我们又回通过 配置ssh公私钥认证的方式省去繁琐的登录远程仓库的操作,不同的git ...

  4. Mac下配置多个SSH KEY访问远程Git服务

    第一步 生成对应的ssh key 1 后面输入你的用户名 或者 邮箱 2 输入一个独立的ssh key名字 区别之前的名字 第二步  编辑 config文件 在.ssh/目录下面 在config文件配 ...

  5. Git高级之配置多个SSH key

    最近我们在代码托管平台上使用SSH的方式下拉代码,通常是用一个ssh key来拉取所有托管平台的代码,如码云,GitHub.GitLab等,但是总用一个不是太好.会有安全风险,这就需要为每个托管平台设 ...

  6. GitLab配置ssh key

    一.背景 当前很多公司都选择git作为代码版本控制工具,然后自己公司搭建私有的gitlab来管理代码,我们在clone代码的时候可以选择http协议,当然我们亦可以选择ssh协议来拉取代码.但是网上很 ...

  7. SSH连接GitHub并配置ssh key

    SSH连接GitHub并配置ssh key 配置git的ssh提交,主要需要以下三步: 1.设置Git的user name和email 2.生成ssh 3.配置git 的ssh key 一.设置Git ...

  8. git 配置ssh key

    第一次生成 ssh key 进入ssh目录  cd ~/.ssh,再输入:ls ,查看文件,如果有.pub的文件,说明已有ssh key 如果没有, 则生成秘钥:ssh-keygen -t rsa - ...

  9. git ssh key配置

    原文:https://blog.csdn.net/lqlqlq007/article/details/78983879 git clone支持https和git(即ssh)两种方式下载源码:  当使用 ...

随机推荐

  1. layout 布局、手风琴accordion、选项卡tabs

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. msysGit管理GitHub代码

    msysGit管理GitHub代码   代码的管理,在日常开发中是很重要的环节,程序员的修炼三部曲——版本控制,单元测试,项目自动化. 本篇就简单的说说通过msysGit来管理GitHub中的代码,实 ...

  3. c#操作IIS站点

    /// <summary> /// 获取本地IIS版本 /// </summary> /// <returns></returns> public st ...

  4. 一致性算法Paxos详解

    分布式系统除了能提升整个系统的性能外还有一个重要的特性就是提高系统的可靠性,可靠性指的是当分布式系统中一台或N台机器宕掉后都不会导致系统不可用,分布式系统是state machine replicat ...

  5. lsll 加载段限长指令

    static inline unsigned long get_limit(unsigned long segment) {  unsigned long __limit;  __asm__(&quo ...

  6. java 重载、重写、构造函数详解

    方法重写 1.重写只能出现在继承关系之中.当一个类继承它的父类方法时,都有机会重写该父类的方法.一个特例是父类的方法被标识为final.重写的主要优点是能够定义某个子类型特有的行为. class An ...

  7. linux vi编辑器操作手册

    简介 Linux下的文本编辑器有很多种,vi 是最常用的,也是各版本Linux的标配.注意,vi 仅仅是一个文本编辑器,可以给字符着色,可以自动补全,但是不像 Windows 下的 word 有排版功 ...

  8. Android Studio中使用android:src="@drawable/ic_launcher"报错

    今天尝试着安装了Android Studio,界面确实不错,列表什么的也改了很多. 然后新建工程,习惯性在activity_main那里加上一段代码测试看看: <ImageView androi ...

  9. 备战NOIP每周写题记录(一)···不间断更新

    ※Recorded By ksq2013 //其实这段时间写的题远远大于这篇博文中的内容,只不过那些数以百记的基础题目实在没必要写在blog上; ※week one 2016.7.18 Monday ...

  10. 装完Centos7提示Initial setup of CentOS Linux 7 (core)(转载)

    http://www.th7.cn/system/lin/201603/156762.shtml