SSH介绍:SSH(安全shell)通常用于访问远程Linux系统。但其身份验证机制(私有本地密钥与公共远程密钥配对)用于保护各种在线服务,从GitHub和Launchpad到运行在Microsoft Azure云上的 Linux 。
从Linux生成这些密钥非常简单。window环境下需要ssh client, 较好的选择是PuTTY 和Git Bash。
SSH密钥由一对文件组成。一个是私钥,永远不应该与任何人共享。另一个是公钥。另一个文件是一个公钥,允许您登录到您提供的容器和VM。生成密钥时,您将使用ssh-keygen
密钥存储在安全位置,以便在连接到实例时绕过登录提示。
问题:在开发过程中,可能需要在本地同时连接到多个gitlab账户,但是一个用户的ssh key只能连接到一个git账户,这就需要创建多个ssh key,分别连接到不同的账户。
解决:1.在下载好的Git中的bin目录下(一般是 C:Program FilesGitin)打开bash.exe输入命令ssh-keygen -t rsa -C "username" (注:username为你git上的用户名)
2.在~/.ssh/目录下创建config文件
Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_outer Host git.xxx.com HostName git.xxx.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_inner
使用git clone的时,可能会出现Permission denied(public key)错误,是因为git默认寻找id_rsa文件作为public key,使用ssh-add -l
发现密钥列表为空,所以使用
$ ssh-add ~/.ssh/github_rsa添加密钥,再测试连接
$ ssh -T git@github.com
PS:创建密钥的时候,是指定email,所以我们创建的密钥是跟email有关系,当我们有网站是用的用一个email的时候,可以不用创建新的密钥,可以直接用之前创建的密钥