• Multiple SSH keys for different accounts on Github or Gitlab


    [inside this square brackets give a name to the followed acc.]
    name = github_username
    email = github_emailaddress
    [any other name]
    name = github_username
    email = github_email
    [credential]
    helper = osxkeychain
    useHttpPath = true

    Multiple SSH keys for different accounts on Github or Gitlab

    SSH
     
    GIT
     
    GITLAB
     
    GITHUB

    Sometimes you need more accounts than one for access to Github or Gitlab and similar tools. For example you can have one account for your projects at home and second account for your company.

    Case 1: Multiple accounts on Github

    Create SSH keys with different names

    $ ssh-keygen -t rsa -C "your_name@home_email.com"

    When you see this message

    Generating public/private rsa key pair. 
    Enter file in which to save the key (/home/user_name/.ssh/id_rsa):

    Enter unique name, for example:

    id_rsa_home

    Next, you'll be asked to enter a passphrase.

    So, you'll have created SSH key for your home account, now you can generate SSH key for your company account.

    Call SSH key generator again with second mail.

    $ ssh-keygen -t rsa -C "your_name@company_email.com"

    Enter name for file

    id_rsa_company

    After all steps you can check that all keys were created.

    $ ls ~/.ssh

    You should see a similar files list:

    id_rsa_home  id_rsa_company  id_rsa_home.pub  id_rsa_company.pub

    Now you need a config file for organise these keys.

    $ cd ~/.ssh/
    $ touch config
    $ nano config

    Add into config file:

    # Home account
    Host home.github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa_home
    
    # Company account
    Host company.github.com
      HostName github.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa_company

    Next you'll delete cached keys

    $ ssh-add -D

    If you see a message

    Could not open a connection to your authentication agent.

    Then enter:

    eval `ssh-agent -s`

    and try again previous command.

    Next, you can check that your keys were added:

    $ ssh-add -l
    2048 d4:e0:39:e1:bf:6f:e3:26:14:6b:26:73:4e:b4:53:83 /home/user/.ssh/id_rsa_home (RSA)
    2048 7a:32:06:3f:3d:6c:f4:a1:d4:65:13:64:a4:ed:1d:63 /home/mateusz/.ssh/id_rsa_company (RSA)

    If you haven't any entries then you should add your keys

    ssh-add ~/.ssh/id_rsa_company
    ssh-add ~/.ssh/id_rsa_home

    Now you can check connection

    $ ssh -T git@home.github.com
    Hi home_user! You've successfully authenticated, but GitHub does not provide shell access.
    
    $ ssh -T git@work.github.com
    Hi company_user! You've successfully authenticated, but GitHub does not provide shell access.

    Note! Check the last paragraph of this tip.

    Case 2: Account on Github and Gitlab

    This is very similar case to the previous. I won't describe it step by step, because all steps are the same. I'll add only example config file.

    For example you have own account for home works and company account on gitlab.

    # GITLAB
    Host gitlab.company_url.com
       HostName gitlab.company_url.com
       PreferredAuthentications publickey
       IdentityFile ~/.ssh/id_rsa_company
    
    # GITHUB
    Host github.com
       HostName github.com
       PreferredAuthentications publickey
       IdentityFile ~/.ssh/id_rsa_home

    The test connections

    $ ssh -T git@gitlab.company_url.com
    Welcome to GitLab, CompanyUser!
    
    $ ssh -T git@github.com
    Hi home_user! You've successfully authenticated, but GitHub does not provide shell access.

    As you probably have seen, prefix on hostname isn't required.

    You may need to set git config user details for any project.

    It's required to distinguish your accounts.

    $ cd ~/home_project
    $ git config user.name "home_user"
    $ git config user.email "your_name@home_email.com" 
  • 相关阅读:
    Scoop Windows 的命令行安装程序管理工具
    微信小程序:用 Promise 解决方案代替回调地狱。 修复 this._invokeMethod is not a function 的问题
    微信小程序 获取地理位置信息
    Vue 与 动态组件 import 的尝试
    exception: TypeError: Cannot read property '_modulesNamespaceMap' of undefined at getModuleByNamespac
    Vue 项目中断点没有跳转到指定源码的问题
    检查 chrome 插件是否存在
    vue-devtools 获取到 vuex store 和 Vue 实例的?
    HTML5的服务器EventSource(server-sent event)发送事件
    ps 渐进式图片的技巧(支持jpg,gif,png)
  • 原文地址:https://www.cnblogs.com/SZLLQ2000/p/10037204.html
Copyright © 2020-2023  润新知