Fork Me

Window多个git服务,SSH-Key配置管理


前言

学习-填坑ing…
我以下说演示的都是在Git Bash上进行。

设定

拥有git服务:github,coding
情景一:github,coding注册邮箱相同
情景二:拥有两个不同注册邮箱的coding账号,coding1和coding2
情景三:拥有github、coding1和coding2,且github和conding1注册邮箱相同

情景一

github,coding注册邮箱相同,意味着我们可以使用一个ssh key配置两个git服务。

git->Bash

  1. 创建SSH Key,输入一下命令,查看是否有.ssh隐藏文件。

    1
    ls -al ~/.ssh
  2. 如果有.ssh文件,就cd进入再生成,如果没有就直接生成

    1
    2
    3
    4
    #进入.ssh文件
    cd ~/.ssh
    #生成 ssh key
    ssh-keygen -t rsa -C "your_email@example.com"
  3. 如下: 这里我选择直接Enter

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #输入注册邮箱
    ssh-keygen -t rsa -C "123456789@163.com"
    Generating public/private rsa key pair.
    #直接Enter或者自定义名字,直接Enter默认生成名字为id_rsa
    #这里直接Enter
    Enter file in which to save the key (/c/Users/M/.ssh/id_rsa): id_rsa
    #直接按Enter或输入自定义密码,区别是自定义密码后,每次push的时候都要输入一次密码
    Enter passphrase (empty for no passphrase): Enter或自定义密码
    Enter same passphrase again: Enter或自定义密码
    Your identification has been saved in id_rsa_oding_github.
    Your public key has been saved in id_rsa_oding_github.pub.
    The key fingerprint is:
    SHA256:HPKUZXyef9+xbK9uSSIZATwPF7Hix0i74OdFIxRjXtY 123456789@163.com
    The key's randomart image is:
    +---[RSA 2048]----+
    | .=oB+ |
    | o+O+.E |
    | . O=.+ . |
    | O *o o |
    | . S =o . |
    | . . =o.. o..|
    | . o .. o.o=|
    | o . o+o|
    | . o+.o|
    +----[SHA256]-----+
  4. 复制id_rsa.pub的内容,设置coding和github的ssh key:

    1
    2
    #复制id_rsa.pub的全部内容
    clip < ~/.ssh/id_rsa.pub

然后试试呗,信我煤油醋。

情景二

在情景一的基础上,假如我有第二个Coding账号,或者有其他git服务的账号,比如码云,而且注册的邮箱和之前的github和coding1不同,改怎么办呢?
这时候就需要对ssh key进行管理。

  1. 首先我们进入ssh文件:

    1
    cd ~/.ssh
  2. 然后在新建一个config文件,输入如下:

    1
    2
    3
    4
    5
    6
    7
    #新建文件
    vi config
    #输入的内容
    Host coding2
    HostName git.coding.net
    User git
    IdentityFile C:/Users/M/.ssh/coding2_rsa
  3. 然后生成一个名字叫coding2_rsa的ssh key步骤和情景一的第三步,差不多:

    1
    2
    3
    4
    #输入coding2的注册邮箱
    ssh-keygen -t rsa -C "987654321@qq.com"
    #名称改为coding2_rsa
    Enter file in which to save the key (/c/Users/M/.ssh/id_rsa): coding2_rsa
  4. 生成后复制coding2_rsa.pub的内容,设置coding2的ssh key。由于我在config配置的时候,Host(别名)设置为coding2,所以在使用ssh方式远程仓库的时候:

    1
    2
    3
    4
    #原来的远程方式
    git add remote git@git.coding.net:Ghouxk/Ghouxk.coding.me.git
    #现在的方式
    git add remote git@coding2:Ghouxk/Ghouxk.coding.me.git

情景三

根据情景二coding2的配置,当拥有github、coding1和coding2个时候,可以这么配:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Host coding2
HostName git.coding.net
User git
IdentityFile C:/Users/M/.ssh/coding2_rsa
Host github.com
HostName github.com
User git
IdentityFile C:/Users/M/.ssh/git_rsa
Host git.coding.net
HostName git.coding.net
User git
IdentityFile C:/Users/M/.ssh/git_rsa

使用Host(别名)区两个coding账号,HostName(主机名)是git服务的地址,不能自定义。

  1. 如果配置后,直接上传,会发现如下错误:
    1
    2
    3
    4
    5
    Error: no such identity: C:/Users/M/.ssh/git_rsa: No such file or directory
    Permission denied (publickey).
    fatal: Could not read from remote repository.
    Please make sure you have the correct access rights and the repository exists.

提示说,没有git_rsa,因为我确实没有啊。。。
解决方法一:重新再生成一次,自定义名字为git_rsa
解决方法二:将刚刚第一次生成的id_rsa和id_rsa.pub名称都改成git_rsa
重新测试上传,ok!

2.为了避免错误,我们可以使用一下命令测试一下:

1
2
3
4
5
6
7
8
9
# -T 后接config配置的Host名字
SSH -T coding2
SSH -T github.com
SSH -T git.coding.net
#结果
Coding.net Tips : [Hello Ghouxk, You've connected to Coding.net via SSH successfully!]
Hi Chouxk! You've successfully authenticated, but GitHub does not provide shell access.
Coding.net Tips : [Hello chouxk, You've connected to Coding.net via SSH successfully!]

SSH命令

1
2
ssh-keygen -t rsa -C "123456789@163.com"
ssh-keygen -t rsa -b 4096 -C "123456789@163.com"

简单解释一下SSH命令及以上:

  ssh-keygen - 生成、管理和转换认证密钥
  -t (type)指定要创建的密钥类型
  -b (bit)指定密钥长度,默认2048速度快,4096相对更安全
  -C (commit)提供一个新注释,注释内容一般为邮箱

参考:ssh-keygen 中文手册

如有错误:欢迎指正,谢谢。
邮箱:435394409@qq.com

总结

  1. 以上都是我边测边写,应该是没有问题滴
  2. 如有问题,那一定不是我的问题  |ω・`)暗中观察
  3. 终于可以愉快穿梭各个git服务了 (:з」∠)_

更新时间: 2017/07/26 11:01:45