多地办公之 SSH 防混淆

2020-02-11  本文已影响0人  厨子

场景:在多托管平台下,如 gitlabgithub 等,生成 SSH key pair 的方法以及防止这些秘钥对文件冲突的策略(就是能正确做到各回各家 各找个妈 成功拉取到对应的项目)

生成 SSH key pair

  1. 在终端输入:
ssh-keygen -t ed25519 -C "email@example.com"
  1. 执行上面的命令后,会让你填写秘钥存放路径。有两种方式:

    1. 直接按回车键,就是默认路径: `~/.ssh/id_ed25519`
    //gitlab_company_rsa 是自定义的名字 根据公司区分文件名
    2. 手动输入一个路径,比如:`~/.ssh/gitlab_company_rsa`
    

    这里推荐使用 手动输入一个路径的方法,因为这是避免混淆的第一步
    如果你加入不止一家公司的私有 gitlab组,那么这样区分很有意义

  2. 拷贝生成的 SSH公钥内容:

//gitlab_company_rsa 换成你自己指定的文件名
pbcopy < ~/.ssh/gitlab_company_rsa.pub
  1. 添加 SSH 公钥到你的账号
    • 登录你的 gitlab 账号,点击头像 进入 Settings
    • 点击左侧 SSH Keys, 把刚才拷贝的内容粘贴到右侧的 Key 区域
    • 点击 Add key

为SSH客户端配置私钥路径

为了避免混淆,在上面的第2步,我们没有使用默认的秘钥路径。所以,为了让 SSH 客户端能找到该私钥,并成功链接到 gitlab,还需要做如下配置:

//gitlab_company_rsa 换成你自己指定的文件名
eval $(ssh-agent -s)
ssh-add ~/.ssh/gitlab_company_rsa
配置 gitlab host

然后打开 ~/.ssh/config:

open ~/.ssh/config

按照下面的内容格式,配置你的 gitlab host,有几个公司的 host,就配置几个 :

# Private GitLab instance
Host gitlab.company.com
  Preferredauthentications publickey
  IdentityFile ~/.ssh/gitlab_company_rsa

# Private GitLab instance2
Host gitlab.company2.com
  Preferredauthentications publickey
  IdentityFile ~/.ssh/gitlab_company2_rsa

#如果有 github 那么下面也会包含有 github 的域名配置
#类似下面这样
#Host *
  #AddKeysToAgent yes
  #UseKeychain yes
  #IdentityFile ~/.ssh/id_rsa

最后

github 的秘钥对生成方式和 上面介绍的 gitlab 类似,只不过它使用的加密方式是 RSA。防止混淆的策略同上。其中 为SSH客户端配置私钥路径配置 gitlab host 是比较重要的两步,不然即使指定了不同的秘钥文件路径,但还是会出现下载项目失败的问题。

上一篇下一篇

猜你喜欢

热点阅读