作为新时代的开发者,大家一般会拥有自己的Github工程。同时公司又提供单独gitlab服务器,所以经常会遇到需要在同一设备下配置多个ssh key的情况,下述会阐述如何进行设置操作:

直接上手

第一步:生成指定名称的秘钥

$ ssh-keygen

Git生成多个ssh-keygen_生成多个key


首先 ​​ssh-keygen​​​ 会确认密钥的存储位置(默认是 ​​.ssh/id_rsa​​),然后它会要求你输入两次密钥口令。如果你不想在使用密钥时输入口令,将其留空即可(直接回车)。

需要注意的是这里必须输入指定的名称,不能使用默认名称,否则会相互覆盖(这是配置多个key的重点),如:id_rsa_idss

第二步:配置config文件

找到key的生成地方,如我的是​​/Users/ligang/.ssh​​,创建config文件(如果已存在,无需创建)。添加如下内容:

Host 192.168.0.45
IdentityFile ~/.ssh/id_rsa.idss
User ligang@xxx.com

字段

说明

Host

远程主机地址

IdentityFile

私钥的文件路径及文件名称

User

用户

Port

远程主机上连接的端口号

HostName

要登录的真实主机名。数字IP地址也是允许的



需要注意的是,默认的id_rsa并不需要配置!

第三步:复制新生成的公钥到服务器

Git生成多个ssh-keygen_ssh_02


登录github或相关gitlab,进入相关的ssh添加页面(如,github添加地址为​​SSH and GPG keys​​),追加上述信息。

第四步:修改相关用户配置

如果不对用户相关配置修改,会默认以 ​​--global​​配置的用户信息进行提交,所以需要进入指定文件夹,进行配置,覆盖全局的相关配置信息。

$ git config user.name "your name"
$ git config user.email "your email"

注意:不要加--global,否则会覆盖默认配置。
至此,大功告成,在不同的工程下互相不再冲突,可以直接获取或提交代码!

相关说明

秘钥信息

Git 服务器都使用 SSH 公钥进行认证,为了向 Git 服务器提供 SSH 公钥,如果某系统用户尚未拥有密钥,必须事先为其生成一份。 默认情况下,用户的 SSH 密钥存储在其 ​​~/.ssh​​ 目录下。

用户信息

当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

Git生成多个ssh-keygen_ssh-keygen_03

上述就是在当前web工程中使用新的用户信息覆盖了全局配置的用户信息(重复的变量名,会使用后者)!
再次强调,如果使用了 ​​​--global​​ 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global 选项的命令来配置。

  • ​git config --list​​:查看配置信息
  • ​git config <key>​​:查看某一项的配置信息

参考地址: