有多个私有库要提交,每个私有库用的不同的秘钥,即使用多套 RSA 秘钥进行提交。
例如:
- 工作私有库
- github
- 其他私有库(比如 aliyun code)
这个时候就要频繁切换,这里有一些技巧。
生成秘钥
生成秘钥的代码如下: (不多解释了)
1 | ssh-keygen -t rsa -C "邮件地址" -f ~/.ssh/WizardMerlin-GitHub |
一路默认即可。但是如果生成秘钥时你设置打开私钥的密码,那么之后你切换私钥也需要输入密码。
执行完毕生层文件如下: (.pub是公钥,这个要上传到服务器上)
上传到服务器上之后,类似 ssh -T git@github.com
会反馈给你信息。
当然你也可以借助 ssh-add -l
查看当前是否设定了 ssh key:
多账户
如果单一账户还好,多个账户之间怎么办?
先要设置多个秘钥,即给不同秘钥起名字,之后通过 ssh-add
的相关命令进行切换。
配置代理
即给 ssh-key 私钥起名字,一般是在 ~/.ssh
目录下建立 config 文件,然后代码类似下面:
1 | # 每一个账户/ssh key 都要配置这么一段代码 |
- Host 对应上传时指定的服务器,即
git@github.com
中的github.com
部分 - HostName 是 Host 的标识,一般写服务器域名(后者你用Host写也可以)
- User 一般写你的邮箱(或者你 git config 根据项目,或者全局配置过了)
- IdentityFile 写私钥位置
- 其他照搬(自己去理解,说的很明白了)
指定代理
一般可以 ssh-add 多个代理,然后根据不同的项目选择不同的代理
但是我习惯于,一次任务,只添加一个代理,用完之后删除。 下面细说。
查看当前指定了哪个秘钥: (通常一个秘钥对应一个地址的私有库)
1 | # 查看当前是否指定了 ssh key |
如果输出 The agent has no identities.
则表示没有代理。
可以自己添加:
1 | ssh-add ~/.ssh/xxxx |
可以添加多个,然后给上传的项目指定 Host 。例如:
1 | # 多个账户 |
形象点儿:
1 | git@github.com:WizardMerlin/wizardmerlin.github.io.git |
意思说,我的这个库,以后就用这个 key 了。
当然也可以不为库指定代理,我随意,我习惯于当前只专注于一件事儿:
每次只添加一个代理,为当前的任务提交;之后清除在做其他任务,再添加其他key。
清除代理使用如下命令:
1 | ## 清理代理 |
也可以设置一下快捷键:(alias)
库的数目有限的话,建议还是为库指定好代理,特别是 github 。
注意
- 如果你生成 ssh-key pair的时候使用了密码才能访问私钥,那么ssh-add也要输入密码
- 可以使用 source-tree 这种工具端,来自动配置;只是:
- 你的库必须掌控在 source tree 工具下,提交等操作,这样才能使用它配置的库
- 如果你给私钥设置了密码,那么它的一些列根据具体库自动切换操作,全部失效
SourceTree 长这样:(配置太简单不说了,注意别设置私钥密码哦)