• git的ssh配置,包括多个git server配置ssh config,使用多个ssh identify


    转自BitBucket的FAQ,写的很好就不修改了。

    From:https://confluence.atlassian.com/pages/viewpage.action?pageId=271943168 

    Typically, if you are working with multiple accounts and/or multiple machines, you benefit from creating multiple SSH identities. In Mac OSX, GitBash, and Linux you can use the three ssh- commands to create and manage your identities.

    SSH Command
    Purpose
    ssh-keygenCreates key pairs.
    ssh-agentAgent for providing keys to remote servers. The agent holds loaded keys in memory.
    ssh-addLoads a private key into the agent.

    To support multiple SSH identities in Bitbucket, do the following:

     

    Acknowledgement

     My thanks to the codingbadger and to Charles on the Bitbucket team who helped me get my head around this technique. Any errors here are of my own making of course.

     

    Create multiple identities for Mac OSX, GitBash, and Linux

    You should at this point already have created at least a single default identity. To see if you have a default identity already, list the contents of your .ssh directory. Default identity files appear as a id_encrypt and id_encrypt.pub pair. Theencrypt value is either rsa or dsa. Use the ssh-keygen command to create a new identity. In the example below, the identity is named personalid.

    $ ssh-keygen -f ~/.ssh/personalid -C "personalid" Generating public/private rsa key pair. Enter passphrase (empty for no passphrase):  Enter same passphrase again:  Your identification has been saved in /Users/manthony/.ssh/personalid. Your public key has been saved in /Users/manthony/.ssh/personalid.pub. The key fingerprint is: 7a:9c:b2:9c:8e:4e:f4:af:de:70:77:b9:52:fd:44:97 personalid The key's randomart image is: +--[ RSA 2048]----+ |         | |         | |        .| |        Eo| |  .  S  . ..| |  . . o . ... .| |  . = = ..o o | |  . o X ... . .| |  .ooB.o ..  | +-----------------+

    If you have multiple Bitbucket accounts, you need to generate a new public/private key pair for each account.

    Create a SSH config file

    When you have multiple identity files, create a SSH config file mechanisms to create aliases for your various identities. You can construct a SSH config file using many parameters and different approaches. The format for the alias entries use in this example is:

    Host alias
    HostName bitbucket.org
    IdentityFile ~/.ssh/identity

    To create a config file for two identities (workid and personalid), you would do the following:

    1. Open a terminal window.
    2. Edit the ~/.ssh/config file. 
      If you don't have a config file, create one.
    3. Add an alias for each identity combination for example:

      Host workdid  HostName bitbucket.org  IdentityFile ~/.ssh/workdid Host personalid  HostName bitbucket.org  IdentityFile ~/.ssh/personalid
    4. Close and save the file.

    Now, you can substitute the alias for portions of the repository URL address as illustrated in the following table:

    DVCSDefault addressAddress with alias
    Git
    git@bitbucket.org:accountname/reponame.git

    git@alias:accountname/reponame.git

    Mercurialssh://hg@bitbucket.org/username/reponame/ssh://hg@bitbucket.org /username/reponame/

    There are lots of ways to use SSH aliasing. Another common use case may be the situation where you are using Bitbucket and GitHub on the same machine. The codingbadger suggested the following configuration for that use case:

    # Default GitHub user
    Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/personalid

    # Work user account
    Host bitbucket.org
    HostName bitbucket.org
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/workid

    If you google for "ssh aliases" or "ssh aliasing" you may find examples that suit you needs better.

    Configure compression for Mercurial

    When sending or retrieving data using SSH, Git does compression for you. Mercurial does not automatically do compression.  You should enable SSH compression as it can speed up things drastically, in some cases. To enable compression for Mercurial, do the following:

    1. Open a terminal window.
    2. Edit the Mercurial global configuration file (~/.hgrc).
    3. Add the following line to the UI section:

      ssh = ssh -C

      When you are done the file should look similar to the following:

      [ui] # Name data to appear in commits username = Mary Anthony <manthony@atlassian.com> ssh = ssh -C
    4. Save and close the file.

    Load each key into the appropriate Bitbucket account

    You load each identities public key into corresponding account. If you have multiple Bitbucket accounts, you load each account with the corresponding public key you created. If you have an account with a repository you access from two identities, you can load two keys into that account – one for each identity. Use the following procedure to load each key into your Bitbucket accounts:

    1. Open a browser and log into Bitbucket.
    2. Choose avatar > Manage Account from the application menu. 
      The system displays the Account settings page.
    3. Click SSH keys.
      The SSH Keys page displays. It shows a list of any existing keys. Then, below that, a dialog for labeling and entering a new key.
    4. Back in your terminal window, copy the contents of your public key file.
      For example, in Linux you can cat the contents.

      cat ~/.ssh/id_rsa.pub

      In Mac OSX the following command copies the output to the clipboard:

      pbcopy < ~/.ssh/id_rsa.pub
    5. Back in your browser, enter a Label for your new key, for example, Default public key.

    6. Paste the copied public key into the SSH Key field:
    7. Press Add key.
      The system adds the key to your account.

    Ensure the ssh-agent is running and all your keys are loaded

    Most modern operating systems (and GitBash) start a ssh-agent running for you. However, it is important you know how to check for a running agent and start one if necessary.

    1. Open a terminal window and enter the appropriate command for your operating system.

      GitBash
      Mac OSX andLinux
      $ ps | grep ssh-agent 5192  1  5192    5192  ? 500 19:23:34 /bin/ssh-agent 

      If for some reason the agent isn't running, start it by entering eval ssh-agentat the command line. You should only be running a single instance of ssh-agent. If you have multiple instances running, use the kill PID command to stop each of them. Then, restart a single instance.

      $ ps -e | grep [s]sh-agent  9060 ??     0:00.28 /usr/bin/ssh-agent -l

      If the agent isn't running, start it by hand. The format for starting the command manually is:

      $ eval ssh-agent $SHELL

      $SHELL is the environment variable for your login shell.

    2. List the currently loaded keys:

      $ ssh-add -l
      2048 68:ef:d6:1e:4b:3b:a3:52:6f:b0:c3:4b:da:e8:d1:9f /c/Documents and Settings/manthony/.ssh/personalid (RSA)
    3. If necessary, add your new key to the list:

      $ ssh-add ~/.ssh/workid
      Enter passphrase for /c/Documents and Settings/manthony/.ssh/workid:
      Identity added: /c/Documents and Settings/manthony/.ssh/workid (/c/Documents and Settings/manthony/.ssh/workid)
    4. List the keys again to verify the add was successful:

      $ ssh-add -l
      2048 68:ef:d6:1e:4b:3b:a3:52:6f:b0:c3:4b:da:e8:d1:9f /c/Documents and Settings/manthony/.ssh/personalid (RSA)
      2048 1b:24:fe:75:4d:d2:31:a9:d5:4e:65:60:7c:60:7a:a3 /c/Documents and Settings/manthony/.ssh/workid (RSA)

    Clone a repository using SSH

    To clone a repository with one of multiple SSH identities that you have added to an SSH config, you would log into Bitbucket and do the following:

    1. Navigate to the repository Overview.
    2. Display the SSH URL.
      For example, Bitbucket displays its tutorial URL as:
      hg clone ssh://hg@bitbucket.org/tutorials/tutorials.bitbucket.org
    3. Open a terminal window on your system.

    4. Navigate to the directory where you store your repositories.

    5. Enter the command but substitute your config alias appropriately:

      hg clone ssh://hg@bitbucket.org/tutorials/tutorials.bitbucket.org


      The system clones the repository for you.

    6. Change directory to the repository.

    7. Display the contents of the repository's configuration.

      $ cat .hg/hgrc  [paths] default = ssh://hg@bitbucket.org/tutorials/tutorials.bitbucket.org

      Notice that the DVCS stored the URL you used for the clone. Now, moving forward for this repository, the DVCS uses the URL that includes the SSH alias.

    Change existing repositories to from HTTPS to SSH (optional)

    You can change existing repository configurations to use a SSH configuration that makes use of your multiple identities. You'll only need to do this for repositories that you have already cloned with HTTPS or for repositories where you want to change an existing SSH specification. For example, if you used SSH to clone a repository in the past and now want to set it up to use another SSH key.

    Git configuration

    1. Open a terminal window.
    2. Navigate to the repository configuration file (REPO_INSTALLDIR/.git).

    3. Open the config file with your favorite editor.

    4. Locate the url value in the [remote "origin"] section

      [remote "origin"]   fetch = +refs/heads/*:refs/remotes/origin/*   url = https://newuserme@bitbucket.org/newuserme/bb101repo.git

      In this example, the url is using the HTTPS protocol. 

    5. Change the url value to use the SSH format for your repository.
      When you are done you should see something similar to the following:

      [remote "origin"]   fetch = +refs/heads/*:refs/remotes/origin/*   url = git@personalid:newuserme/bb101repo.git

    Mercurial Configuration

    1. Open a terminal window.
    2. Navigate to the repository configuration file (REPO_INSTALLDIR/.hg).

    3. Open the hgrc file with your favorite editor.

      [paths] default = https://newuserme@staging.bitbucket.org/newuserme/bb101repo
    4. Change the [paths] default to:

      [paths] default = ssh://hg@bitbucket.org/newuserme/bb101repo
    5. Save and close the file.
  • 相关阅读:
    TCP的拥塞控制(详解)
    TCP加速–初始拥塞窗口调整
    HTTPS 之 TLS 性能调优
    https抓包分析——wireshark抓包分析TLSv2(详细)
    HTTPS的由来详述,数字证书实现HTTPS
    详解Nginx服务器配置
    java:tomcat(负载均衡)nginx的应用配置
    QML对象构造顺序
    QML属性动态绑定
    mysql去重查询某列
  • 原文地址:https://www.cnblogs.com/super119/p/2849987.html
Copyright © 2020-2023  润新知