背景:
公司使用的代码管理工具是gitlab,我个人使用的是github,在使用同一台电脑的情况下,将代码上传到相应的工具中,我们知道,在使用这两款工具的时候,需要在本地生成秘钥,在工具平台上配置相关秘钥,同一台电脑使用两种工具就需要我们进行配置,让电脑知道该往哪里传。废话说完~~
思路:
1、在~/.ssh/下生成两个秘钥文件(github:id_rsa_self,gitlab:id_rsa_company)
2、新增一个配置文件config,在config 中进行配置
3、将本地秘钥复制到工具平台的SSH-key的配置中
步骤
1、生成秘钥
gitlab:
# 在~/.ssh/目录会生成id_rsa_company和id_rsa_company.pub私钥和公钥。
#后面将id_rsa_company.pub中的内容粘帖到公司GitLab服务器的SSH-key的配置中。
$ ssh-keygen -t rsa -C "注册gitlab邮箱" -f ~/.ssh/id_rsa_company
github:
# 在~/.ssh/目录会生成id_rsa_self和id_rsa_self.pub私钥和公钥。
#后面将id_rsa_self.pub中的内容粘帖到个人github的SSH-key的配置中。
$ ssh-keygen -t rsa -C "注册github邮箱" -f ~/.ssh/id_rsa_self
创建config
在~/.ssh下创建config文件,在Windows下可以鼠标操作创建,但是要注意,这个文件是没有后缀的。
cd ~/.ssh
touch config
添加如下内容:
# self(182xxxx8804@163.com)
Host github.com
Port 22
User git
HostName github.com #github地址
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_self
# company()
Host gitlab.com
Port 22
User git
HostName gitlab.com #公司gitlab地址
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_company
配置字段信息进行简单解释:
Host
它涵盖了下面一个段的配置,我们可以通过他来替代将要连接的服务器地址。这里可以使用任意字段或通配符。当ssh的时候如果服务器地址能匹配上这里Host指定的值,则Host下面指定的HostName将被作为最终的服务器地址使用,并且将使用该Host字段下面配置的所有自定义配置来覆盖默认的/etc/ssh/ssh_config配置信息。
Port
自定义的端口。默认为22,可不配置
User
自定义的用户名,默认为git,可不配置
HostName
真正连接的服务器地址
PreferredAuthentications
指定优先使用哪种方式验证,支持密码和秘钥验证方式
IdentityFile
指定本次连接使用的密钥文件
在设置HostName需要注意:
我们获取公司gitlab或者github地址的时候,可能是copy浏览器上的地址而来,就像这样的https://github.com,这个时候需要把https://去掉,保留github.com部分,不然是连不上的。
测试
# 测试github
$ ssh -T git@github.com
# 测试gitlab
$ ssh -T git@gitlab.com
测试成功返回:
如果看到命令行给你打招呼那就是成功了。
关于测试这边有个小坑:
我再测试github的时候,用了我github的用户名,结果连不上ssh -T tangrenxin@github.com,然后报publickey的错误。
看官网信息:
Always use the “git” user
All connections, including those for remote URLs, must be made as the “git” user. If you try to connect with your GitHub username, it will fail:
ssh -T GITHUB-USERNAME@github.com
Permission denied (publickey).
If your connection failed and you’re using a remote URL with your GitHub username, you can change the remote URL to use the “git” user.
You should verify your connection by typing:
ssh -T git@github.com
Hi username! You’ve successfully authenticated…
使用 ssh -T git@github.com 做测试即可