问题背景
最近有过这样一个需求:因为我工作和学习都是用的一台电脑,在工作中有时候需要在本地向公司的服务器上传提交代码。闲暇自己学习动手写demo时,需要向github上上传代码。这个时候又不想用同一个邮箱和同一套秘钥(我倒这样没试过。应该不可行吧)。于是就自己生成了两份不同的秘钥。以下是配置的方法:
配置方法
- 先进入到
C:\Users\用户名\.ssh
目录下 - 先生成用于访问github的密钥对
ssh-keygen -t -rsa -C ‘你的邮箱’ - 在生成访问自己公司的秘钥对(注意重新命名,否则会覆盖掉上面刚生成的秘钥)
ssh-keygen -t rsa -C ‘你在公司的邮箱’ -f id_rsa_xxx - 分别将生成的两个公钥id_rsa.pub和id_rsa_xxx.pub添加到github中和你公司的gerrit的setting中
- (重点来了)在
C:\Users\用户名\.ssh
下创建config文件,此文件用于配置私钥对应的服务器。
内容如下:
#公司的秘钥配置
Host 公司的git的访问ip
HostName 公司的git的访问ip
Port 公司的git的访问ip端口
PreferredAuthentications publickey
IdentityFile C:\Users\用户名\.ssh\id_rsa_xxx
#github的秘钥配置
Host github.com
HostName ssh.github.com
User 你的邮箱
Port 443
PreferredAuthentications publickey
IdentityFile C:\Users\用户名\.ssh\id_rsa
# 配置文件参数
# Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件,建议最好和HostName一致都为ip
# HostName : 要登录主机的主机名
# User : 登录名即邮箱
# Port 主机名后的端口(github是 443 )
# IdentityFile : 指明上面User对应的identityFile路径
关于以上github的 Port 之前我这是的22,但是不知道为什么不行。然后443就是好的。
然后就是用git命令去测试了,尝试去服务器拉一份代码下来。如果成功的话,则会在.ssh目录下生成known_hosts文件,并将账户信息自动加进去。