一台机器上设置多个SSH Key

2016/7/22 文章分类: GO语言杂谈

先声明,这篇里提到的方法,我并没有测试成功,我的环境是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!,说明验证成功了