导语
进入公司已经一段时间,由于在入职的时候并没有重新配置SSH KEY,而是在工作中沿用之前在Github使用的密钥,由此导致在Github上的项目VCS log中的提交者与github账户名称不一致,所以想要配置两个SSH KEY将工作与个人github区分开来,由于配置上出现失误以及没有get到参考博主所提供的配置样例中的要点,所以过程曲折。
以下是具体配置流程。
开始
在正式开始进行配置前,需要进行一些准备工作。
右键桌面或任意文件夹,并单击菜单中的“Git Bash Here”,执行以下命令查询当前git的配置信息
git config --global --list
如果user.name与user.email存在值,建议执行如下命令将其unset
git config --global --unset user.name
git config --global --unset user.email
完成全局用户名和邮箱的重置后,执行以下命令将跳转到.ssh目录(该文件夹默认在主目录下)
cd ~/.ssh
这时可以使用
ls -all
命令检查一下该目录下是否有之前配置过的密钥对以及config或是host文件,由于笔者在进行配置时删除了密钥对,所以下面的流程是基于删除存在的所有密钥对后进行的操作,如不愿意删除原有密钥,可以将以下过程进行对比,并自行修改配置步骤。
Github配置
完成上述准备工作后,以下将正式开始SSH KEY的配置流程。
1、生成Github的SSH KEY
在bash窗口中执行以下命令生成github的SSH密钥对
ssh-keygen -t rsa -f ~/.ssh/fileName_id_rsa -C "yourMail@Mail.com"
其中 "-f" 后的 "~/.ssh"为密钥对生成的路径,"fileName_id_rsa"为密钥文件的文件名,可以自行修改。
执行上述命令后一路回车(默认不设置密码),执行完毕后即完成密钥对的生成。
检查文件是否生成成功
2、在Github上添加刚生成的SSH KEY公钥
成功生成密钥对后,执行以下命令打印公钥
cat ./fileName_rsa_id.pub
或是直接使用记事本打开公钥文件,全选并复制其内容后,进入Github,依次点击Setting -> SSH and GPG keys -> New SSH key
页面上的Title可以填写任意字段,并将刚才复制的公钥粘贴到Key文本框中,点击Add SSH key即完成配置。
Gerrit配置
Gerrit的配置流程和Github的几乎相同,在生成SSH KEY密钥对后,将公钥配置到Gerrit网站上即可。
1、生成Gerrit的密钥对
在bash窗口中执行以下命令生成github的SSH密钥对
ssh-keygen -t rsa -f ~/.ssh/gerritFileName_id_rsa -C "yourWorkMail@WorkMail.com"
其中 "-f" 后的 "~/.ssh"为密钥对生成的路径,"gerritFileName_id_rsa"为密钥文件的文件名,可以自行修改。 执行上述命令后一路回车(默认不设置密码),执行完毕后即完成密钥对的生成。
检查文件是否生成成功
2、在Github上添加刚生成的SSH KEY公钥
成功生成密钥对后,执行以下命令打印公钥
cat ./fileName_rsa_id.pub
或是直接使用记事本打开公钥文件,全选并复制其内容后,进入你公司的Gerrit网站,在右上角用户名的菜单中点击Setting
然后再在左侧菜单中点击 SSH Public Keys -> Add进行添加
重要!Config文件配置
完成上述 Github 与 Gerrit的密钥对生成后,需要在 ~/.ssh目录下创建一个config文件,git将使用该文件中的配置来决定将要进行的ssh链接是该使用哪一个密钥。
执行 vi config命令在 ~/.ssh目录下创建一个config文件,并按 i 编辑其内容,下面提供一个范本:
# github
Host github.com
HostName github.com
User githubUsername
IdentityFile ~/.ssh/github_id_rsa
PreferredAuthentications publickey
# gerrit
Host 192.168.123.123 | gerrit.com
HostName 192.168.123.123
Port 12345
User gerritUsername
IdentityFile ~/.ssh/gerrit_id_rsa
PreferredAuthentications publickey
以下为各字段的解释: Host: 该字段可任意填写,且可以一次性配置多个。该字段将会用于ssh 连接命令中,例如:
//格式
ssh -T userName@Host
//示例
ssh -T git@github.com
//@后内容与上方config中的Host字段内容相同
HostName:该字段为将要链接的实际地址,可以为具体ip或是可用域名
Post:端口
User:用于连接的用户名
IdentityFile:用于进行验证的私钥文件路径
PreferredAuthentications: 优先用于验证的方式,此处选为publickey,即是用公钥
注意!关于加密算法的选取
如果在严格按照本文中的流程正确配置好秘钥对后,仍然不能成功建立ssh连接,则请尝试使用以下参数查看日志
ssh -vT yourName@gerrit.com
可以发现图中结果显示:主机 **: 使用ED25519方式进行加密,此时可以判断使用前文中的rsa方式生成的秘钥对不能匹配目标主机的加密方式,所以此时需要把生成秘钥对的命令做以下修改,然后在删除现有的文件后,重新执行gerrit的秘钥配置流程即可。
ssh-keygen -t ED25519 -f ~/.ssh/gerritFileName_id_ED25519 -C "yourWorkMail@WorkMail.com"
测试链接
完成上述测试后,即已经完成了SSH Key的配置。接下来可以使用ssh -T 命令来测试配置的密钥是否可用。
在这里笔者删除了用于示例的两对密钥文件,仅留下可用的密钥用于展示。
使用
ssh -T git@github.com
命令测试连接Github。
注意:使用Git对Github进行ssh连接时,要写成git@github.com,而不能写成yourName@github.com
同样的,执行
ssh -T username@gerrit.com
ssh -T username@192.168.123.123
命令测试连接Gerrit。
至此,github与gerrit所分开的两组公钥配置完毕。