多地办公之 SSH 防混淆
2020-02-11 本文已影响0人
厨子
场景:在多托管平台下,如
gitlab
和github
等,生成SSH key pair
的方法以及防止这些秘钥对文件冲突的策略(就是能正确做到各回各家 各找个妈 成功拉取到对应的项目)
生成 SSH key pair
- 在终端输入:
ssh-keygen -t ed25519 -C "email@example.com"
- 注:后面的邮箱换成你使用的有效邮箱
-
gitlab
推荐使用ED25519
加密方式,因为它安全性更强、性能更好
-
执行上面的命令后,会让你填写秘钥存放路径。有两种方式:
1. 直接按回车键,就是默认路径: `~/.ssh/id_ed25519` //gitlab_company_rsa 是自定义的名字 根据公司区分文件名 2. 手动输入一个路径,比如:`~/.ssh/gitlab_company_rsa`
这里推荐使用 手动输入一个路径的方法,因为这是避免混淆的第一步
如果你加入不止一家公司的私有gitlab
组,那么这样区分很有意义 -
拷贝生成的 SSH公钥内容:
//gitlab_company_rsa 换成你自己指定的文件名
pbcopy < ~/.ssh/gitlab_company_rsa.pub
- 添加 SSH 公钥到你的账号
- 登录你的 gitlab 账号,点击头像 进入
Settings
- 点击左侧
SSH Keys
, 把刚才拷贝的内容粘贴到右侧的Key
区域 - 点击 Add key
- 登录你的 gitlab 账号,点击头像 进入
为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 是比较重要的两步,不然即使指定了不同的秘钥文件路径,但还是会出现下载项目失败的问题。