先声明,这篇里提到的方法,我并没有测试成功,我的环境是Mac。
1. 生成 ssh keys
终端下输入命令:
ssh-keygen -t rsa -C "youname@example.com"
这时可以一路回车,不输入任何字符,将会在~/.ssh下自动生成id_rsa和id_rsa.pub文件。
注意:双引号换成自己的邮箱,如果linux下遇到权限问题,只需在前面加上sudo
2. github添加SSH keys
将id_rsa.pub里面的内容复制下来,在github上的settings里面找到add keys,将其粘贴到key即可,title唯一即可随便填,建议写有意义的;
3. 测试
在控制台上测试一下,输入:
ssh -T git@github.com
只要看到最后一行:
Hi chenlianjiang! You've successfully authenticated, but GitHub does not provide shell access
说明验证成功了.
4. gitlib帐号添加SSH keys
同第(1)步一样,生成新的SSH Keys
这时候在生成ssh key时候要注意了这时一路回车,不输入任何字符在绑定gitlibng的ssh key时,会发现将github的ssh key覆盖了。需要做调整:
打开终端,终端下输入命令:
ssh-keygen -t rsa -C "youname@example.com"
这时,给这个文件起一个名字, 比如叫C:\Users\Administrator.ssh\ id_rsa_gitlib, 所以相应的也会生成一个 id_rsa_gitlib.pub 文件。
注意这里如果只输入文件名会在终端的当前目录下生成,拷贝到对应位置即可;
终端输入一下命令:
$ ssh-add ~/.ssh/id_rsa
$ ssh-add ~/.ssh/id_rsa_gitlib
ssh-add命令是把专用密钥添加到ssh-agent的高速缓存中。该命令位置在/usr/bin/ssh-add
如果出现Could not open a connection to your authentication agent.错误提示先执行$ ssh-agent.exe bash,然后执行上面命令;
-D:删除ssh-agent中的所有密钥
-d:从ssh-agent中的删除密钥
-e pkcs11:删除PKCS#11共享库pkcs1提供的钥匙
-s pkcs11:添加PKCS#11共享库pkcs1提供的钥匙
-L:显示ssh-agent中的公钥
-l:显示ssh-agent中的密钥
-t life:对加载的密钥设置超时时间,超时ssh-agent将自动卸载密钥
-X:对ssh-agent进行解锁
-x:对ssh-agent进行加锁
在~/.ssh/目录下新建config文件,并添加:
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
# gitlib
Host gitlib.com
HostName gitlib.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitlib
将id_rsa_gitlib.pub里面的内容复制下来,在gitlib上的账户里面找到所示SSH keys,将其粘贴到key内容即可,Title唯一即可随便填,,点击添加需要输入登录密码;
5. 测试
在控制台上测试一下,输入:
ssh -T git@域名
只要看到最后一行Welcome to GitLab, chenlj!
,说明验证成功了