一般而言,除了在GitHub仓库外,很多公司习惯在GitLab上托管代码。因此,开发者通常会有多个密钥,分别为多个托管平台使用。
参考资料
生成密钥对
-
使用如下命令生成一个SSH 密钥对
ssh-keygen -t rsa -b 4096 -C "email@example.com"
其中,- C标志是为了在密钥中添加注释,从而可以在众多的密钥中识别该密钥。
-
输入密钥对的保存路径。如果不使用默认的路径(通常是
~/.ssh/
),则需要自定义路径,并需要给ssh客户端添加配置文件(在~/.ssh/config
)来声明密钥对的路径以及相关的主机Host。 -
最后,可以输入一个密码来保护密钥对。也可以不输入,拥有一个密码来保护密钥对更好。
使用ssh代理来管理密钥对
如果为某个托管平台如GitLab使用了非默认的密钥对路径,则需要为ssh客户端添加配置文件来指出该托管平台对应的私钥的位置。
-
使用如下命令为ssh代理添加密钥对
eval $(ssh-agent -s) ssh-add ~/.ssh/other_id_rsa
其中,
eval $(ssh-agent -s)
用来在后台启动ssh代理,ssh-add ~/.ssh/other_id_rsa
用来添加私钥,这里需要将~/.ssh/other_id_rsa
这个路径替换为自己的私钥路径 -
添加配置文件:OpenSSH客户端的配置文件默认在
~/.ssh/config
路径下(如果该文件不存在,则创建该文件)。该文件内,需要设置多个主机以及所对应的私钥路径。例如# GitLab.com Host gitlab.com Preferredauthentications publickey IdentityFile ~/.ssh/gitlab_com_rsa # Private GitLab instance Host gitlab.company.com Preferredauthentications publickey IdentityFile ~/.ssh/example_com_rsa
添加私钥时的问题
在使用ssh-add
命令添加私钥时,可能会出现’Permissions 0644 for ‘~.ssh/id_rsa’ are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
’
这样的警告,表示私钥的权限过大,该私钥被忽略。
针对该问题,可以更改私钥的权限,使用
chmod 0600 private_key
这里将private_key更改为自己的私钥即可。
测试连接
使用以下命令来进行连接的测试
ssh -T git@github.com