配置多个ssh

刚到公司是没有再重新配置ssh,导致了自己的github和公司gitlab提交的混乱。

这种情况我们可以分情况配置ssh

  1. 分别生成gitlab和github的ssh-key
1
$ ssh-keygen -t rsa -C "youremail@yourcompany.com" -f ~/.ssh/gitlab-rsa

在~/.ssh/目录会生成gitlab-rsa私钥和gitlab-rsa.pub公钥。 我们将id-rsa.pub中的内容粘帖到公司gitlab服务器的SSH-key的配置中。

1
$ ssh-keygen -t rsa -C "youremail@your.com" -f ~/.ssh/github-rsa

在~/.ssh/目录会生成github-rsa私钥和github-rsa.pub公钥。 我们将github-rsa.pub中的内容粘帖到github服务器的SSH-key的配置中。

在创建ssh-key的时候会有提示

1
2
3
4
Enter passphrase (empty for no passphrase):
//输入密语,可以为空
Enter same passphrase again:
//再次输入确认
  1. 将密钥加入到ssh-agent

    ssh-agent是用于管理密钥,通过ssh-add命令将两个将密钥加入到ssh-agent中,SSH可以和ssh-agent通信获取密钥,这样就不需要手工输入密码了。

    1
    2
    $ ssh-add ~/.ssh/gitlab-rsa
    $ ssh-add ~/.ssh/github-rsa

    如果运行ssh-add命令,遇到“Could not open a connection to your authentication agent.”提示。

    需要ssh-agent启动bash,运行以下命令,然后再重新执行ssh-add命令

    1
    $ ssh-agent bash
  2. 创建并编辑config文件

    1
    2
    $ cd ~/.ssh/
    $ touch config

    在config中写入,并保存

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # gitlab
    Host gitlab.com
    HostName gitlab.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github-rsa
    # 配置文件参数
    # Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件
    # HostName : 要登录主机的主机名
    # IdentityFile : 指明对应的identityFile路径
  3. 测试是否生效

    1
    $ ssh git@github.com

    出现以下提示即为成功

    1
    2
    3
    4
    5
    6
    The authenticity of host 'github.com (192.30.253.112)' can't be established.
    RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxx.
    Are you sure you want to continue connecting (yes/no)?
    //输入yes,按回车
    Warning: Permanently added 'github.com,192.30.253.112' (RSA) to the list of known hosts.
    Permission denied (publickey).
1
2
3
4
5
6
7
8
9
10
11
# flag-api
git remote remove origin
git remote add origin git@code.aliyun.com:546405040/flag-api.git
git push --set-upstream origin master #第一次可能需要
# xl
git remote remove origin
git remote add origin git@code.aliyun.com:546405040/xl.git
git push --set-upstream origin master #第一次可能需要

gitlab

Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa

github

Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github-rsa

zeno

Host 47.52.30.225
HostName 47.52.30.225
PreferredAuthentications publickey
IdentityFile ~/.ssh/zeno-rsa

#User git

阿里
Host code.aliyun.com
HostName code.aliyun.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitali-rsa

origin git@47.52.30.225:xl.git

配置文件参数

Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件

HostName : 要登录主机的主机名

User : 用户名

IdentityFile : 指明对应的identityFile路径