[关闭]
@yangfch3 2015-09-11T09:53:32.000000Z 字数 1584 阅读 15488

多个 SSH KEY 的管理

git


前言:ssh-key模式 是开发时可能遇到的问题,新手在使用多 ssh key 模式时很容易不知所措。

情景:工作室有一台公用电脑,使用它的开发人员混杂,使用时如何做到不同用户互不影响?如何实现多个ssh-key?如何实现多个ssh-key的配置?如何保证使用正确的私钥验证提交?


github提交验证机制


我们在个人的电脑上使用如下命令可生成ssh key

  1. $ ssh-keygen -t rsa -C "youremail@email.com"

这时会在用户根目录下生成一个.ssh文件夹,一个私钥:id_rsa,一个公钥:id_rsa_pub,该公钥和私钥包含了你邮箱的信息,具有随机不可复现性!

ssh公钥私钥同时生成且唯一配对。公钥用于远程主机,私钥存储在本地工作机,私钥用于在push(即write操作)时验证身份。因为公钥与私钥的唯一对应性,只有能和公钥配对的私钥才能对远程主机进行写操作!

我们在使用github时会发现有两个地方牵涉到公钥添加,一个是账号设置下的ssh setting,另一个是单个仓库设置的Deploy key。添加至前者则代表 私钥主机可对当前远程主机的所有仓库进行写操作,添加至后者则代表 私钥主机只能对当前仓库进行写操作

每次连接时SSH客户端发送本地私钥(默认~/.ssh/id_rsa)到远程主机进行公私钥配对验证!


同一工作主机,多个ssh key


对于公共电脑,多人使用,解决方案需要做到以下几点:


解决方案:

  1. ssh-keygen -t rsa -C "youremail@email.com" -f ~/.ssh/second
    生成新的ssh key并命名为second

    或者ssh-keygen -t rsa -C "youremail@email.com"
    在询问时定义名称

  2. 此时ls.ssh目录,会发现多了second公钥和私钥

    id_rsa
    id_rsa.pub
    known_hosts
    list.txt
    second
    second.pub

  3. 远程主机添加公钥

  4. ~/.ssh/目录下新建config文件,用于配置各个公私钥对应的主机

    1. # Default github user(first@mail.com) 默认配置,一般可以省略
    2. Host github.com
    3. Hostname github.com
    4. User git
    5. Identityfile ~/.ssh/github
    6. # second user(second@mail.com) 给一个新的Host称呼
    7. Host second.github.com // 主机名字,不能重名
    8. HostName github.com // 主机所在域名或IP
    9. User git // 用户名称
    10. IdentityFile C:/Users/username/.ssh/id_rsa_second // 私钥路径

    注意:

    1. 每个邮箱能配置一个公私钥,邮箱是一个重要的身份识别标志
    2. 几个主机的命名不能相同;
    3. 私钥路径也可以写为 ~/.ssh/...
    4. 如有需要还可以添加Port:xxxx端口配置。

  5. 测试连接情况
    $ ssh -T git@second.github.com

  6. 现在开始使用新的公私钥进行工作吧

    • 情景1:使用新的公私钥进行克隆操作

      git clone git@second.github.com:username/repo.git
      注意此时要把原来的github.com配置成你定义的second.github.com

    • 情景2:已经克隆,之后才添加新的公私钥,我要为仓库设置使用新的公私钥进行push操作

      修改仓库的配置文件:.git/config

      1. [remote "origin"]
      2. url = git@second.github.com:itmyline/blog.git

      即可

      之后就照平常一样工作就行啦!



其实更简单的方法是:


































































利用各操作系统的新建本地用户来隔离用户即可

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注