zoukankan      html  css  js  c++  java
  • ssh-key 与 git账户配置以及多账户配置

    在使用git的时候,git与远程服务器是一般通过ssh传输的(也支持ftp,https),我们在管理远程分支之前 需要在本机上创建ssh-key密钥对,并把其中的公钥添加到github中。
     

    单用户情况:

    如果你就会一直在你的计算计算机使用一个远程的Git服务器,并且账号是一个,比较简单,生成key的时候也没有太大注意的地方,直接运行如下的第一步然后按回车就可以了
      1、在 gitbash上运行  ssh-keygen -t  rsa  -C  "Github账户邮箱"
      2、接下来会提示输入key的名字 默认名字为id_rsa .默认就行了
      3、然后会提示输入口令,这里口令与Github中的密码无关,随便输入可以为空。
      4. 如果在第二步中的没有重新命名的话,则忽略此步骤,ssh agent默认只读取id_rsa,为了让SSH识别新的私钥,需将其添加到SSH agent中 
        ssh-add id_rsa

    如果出现Could not open a connection to your authentication agent的错误,就试着先用以下命令:

    ssh-agent bash
    ssh-add id_rsa

    添加完之后 登陆Github   点击 网页右上侧的 Account Setting 按钮 - 选择 ssh-keys  点击Add SSH Key  ,在title中输入名字,然后将公约即id_rsa.pub添加到ssh-key处。

    在git bash的命令行中输入 

    ssh -T git@github.com 如果能正常访问即可

    $ ssh -T git@github.com
    Enter passphrase for key 'C:/Users/kunkun/.ssh/github.rsa':
    Hi kunkun01! You've successfully authenticated, but GitHub does not provide shel
    l access.
    

      

     多账户又分为两种情况  

    也可以参考老外写的 Git config for mutiply SSH keys

    1、针对同一个服务器的同用户(比如 我平时开发开源的小东东,有的是一个账号是公司的账号对外开源项目用的,另外我自己也比较崇尚开源,所以自己也有了Github账号)

    2,针对不同服务器的用户(现在pass平台 部署应用都是通过git来管理的,比如常见的Openshift,Heroku appfog等,在这里我也注册了账号)

    在我们访问git服务器的时候,如果通过ssh的方式话,访问不同的服务器要使用不同的ssh-key。经过在第一步的过程中,在创建ssh-key的默认命名为id_rsa,如果使用不同的账户的,必须得给不同的key设置不同的名字,否则如果继续使用默认名字的话,会把之前的id_rsa覆盖掉。

    具体操作如下 user2是我的另外一个Github账户

    1、新建user2的SSH Key

    #新建SSH key:
    $ cd ~/.ssh     # 切换到C:UsersAdministrator.ssh
    ssh-keygen -t rsa -C "mywork@email.com"  # 新建工作的SSH key
    # 设置名称为id_rsa_work
    Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): id_rsa_work

    2、新密钥添加到SSH agent中

    因为默认只读取id_rsa,为了让SSH识别新的私钥,需将其添加到SSH agent中:

    ssh-add ~/.ssh/id_rsa_work

    如果出现Could not open a connection to your authentication agent的错误,就试着用以下命令:

    ssh-agent bash
    ssh-add ~/.ssh/id_rsa_work
    (第二步 好像没什么作用)

    3、修改config文件 将账户以及git服务器与对应的密钥关联。在~/.ssh目录下找到config文件,如果没有就创建:

    touch config 

    然后修改如下: 我的config配置如下:

    # 该文件用于配置私钥对应的服务器
    # Default github user(first@mail.com)
    Host github.com
     HostName github.com
     User git
     IdentityFile C:/Users/Administrator/.ssh/id_rsa
    
     # second user(second@mail.com)
     # 建一个github别名,新建的帐号使用这个别名做克隆和更新
    Host github2
     HostName github.com
     User git
     IdentityFile C:/Users/Administrator/.ssh/id_rsa_work

    其规则就是:从上至下读取config的内容,在每个Host下寻找对应的私钥。这里将GitHub SSH仓库地址中的git@github.com替换成新建的Host别名如:github2,那么原地址是:git@github.com:funpeng/Mywork.git,替换后应该是:github2:funpeng/Mywork.git.

    4、用记事本打开新生成的~/.ssh/id_rsa2.pub文件,将里面的内容添加到GitHub后台。

    可不要忘了添加到你的另一个github帐号下的SSH Key中。

    5、测试:

    $ ssh -T git@github.com
    Hi BeginMan! You've successfully authenticated, but GitHub does not provide shel
    l access.
    $ ssh -T github2 
    Hi kunkun01! You've successfully authenticated, but GitHub does not provide shell access. 

    6、应用

    测试成功,那么我尝试在我的work目录下克隆我@126.com账号下的远程仓库。如下:

    $ git clone github2:kunkun01/Mywork.git
    Cloning into 'Mywork'...
    remote: Counting objects: 3, done.
    remote: Total 3 (delta 0), reused 0 (delta 0)
    Receiving objects: 100% (3/3), done.
    Checking connectivity... done                                                                                

    如果你只是通过这篇文章中所述配置了Host,那么你多个账号下面的提交用户会是一个人,所以需要通过命令git config --global --unset user.email删除用户账户设置,在每一个repo下面使用git config --local user.email '你的github邮箱@mail.com' 命令单独设置用户账户信息

  • 相关阅读:
    Brain network involved in autonomic functions 与自主功能相关的大脑网络
    Brief summary of classical components of ERP 事件相关成分(ERP)经典成分小结
    ICA & Percentage Variance Account For (PVAF)
    数据处理中白化Whitening的作用图解分析
    Loadings vs eigenvectors in PCA 主成分分析(PCA)中的负荷和特征向量
    主成分分析(PCA)和独立成分分析(ICA)相关资料
    Sketch of heart and QRS complex 心脏及QRS波群简图
    Brain Network visulation in EEG 脑电网络可视化
    Phase Locking Value (PLV) 神经信号的锁相值
    ubuntu16.04下的一些基本操作笔记
  • 原文地址:https://www.cnblogs.com/dubaokun/p/3550870.html
Copyright © 2011-2022 走看看