zoukankan      html  css  js  c++  java
  • [原创]SSH密钥访问Git仓库配置

    SSH密钥并非为了解决拉取git仓库代码时,需要频繁输入密码的问题。
    SSH是一种比较安全的协议,可以用来免去远程登录Linux等服务器时需要输入密码的繁琐过程。
    命令:

    ssh user@server-ip
    
    ~$ ssh root@www.baidu.com 
    The authenticity of host 'www.baidu.com (111.111.111.111)' can't be established.
    ECDSA key fingerprint is SHA256:dQG6QRYvoWfgkMVcCv5S1jO6nkbv7bUPmS8i5BvhX3g.
    Are you sure you want to continue connecting (yes/no)? 
    Host key verification failed.
    

    Git仓库也仅仅使用了以上同一原理。

    如何生成SSH公私玥

    ssh-keygen -t rsa -C 'mail-address@qq.com' -f ~/.ssh/filename
    
    ~$ ssh-keygen 
    Generating public/private rsa key pair.
    Enter file in which to save the key (/Users/admin/.ssh/id_rsa): 
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /Users/admin/.ssh/id_rsa.
    Your public key has been saved in /Users/admin/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:CGcr7t8PaaQKFLYA7nLjqnBy4P2XNQ/C55Uh7E/bVgY admin@192.168.1.1
    The key's randomart image is:
    +---[RSA 2048]----+
    |.                |
    |o                |
    |..o . o .        |
    |.o o + o o . E   |
    |o.= . + S . o .  |
    |o=.o . = B +   o |
    |o.=.. . X B o o  |
    |.= o.. = o + o   |
    |+   ooo ... .    |
    +----[SHA256]-----+
    

    ssh-keygen参数

    ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1]
                      [-N new_passphrase] [-C comment] [-f output_keyfile]
           ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
           ssh-keygen -i [-m key_format] [-f input_keyfile]
           ssh-keygen -e [-m key_format] [-f input_keyfile]
           ssh-keygen -y [-f input_keyfile]
           ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
           ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
           ssh-keygen -B [-f input_keyfile]
           ssh-keygen -D pkcs11
           ssh-keygen -F hostname [-f known_hosts_file] [-l]
           ssh-keygen -H [-f known_hosts_file]
           ssh-keygen -R hostname [-f known_hosts_file]
           ssh-keygen -r hostname [-f input_keyfile] [-g]
           ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]
           ssh-keygen -T output_file -f input_file [-v] [-a rounds] [-J num_lines]
                      [-j start_line] [-K checkpt] [-W generator]
           ssh-keygen -s ca_key -I certificate_identity [-h] [-n principals]
                      [-O option] [-V validity_interval] [-z serial_number] file ...
           ssh-keygen -L [-f input_keyfile]
           ssh-keygen -A
           ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
                      file ...
           ssh-keygen -Q -f krl_file file ...
    
    -b bits
                 指定密钥长度。对于RSA密钥,最小要求768位,默认是2048位。DSA密钥必须恰好是1024位(FIPS 186-2 标准的要求)。
     -C comment
                 提供一个新注释
    -f filename
                 指定密钥文件名。
    -t type
                 指定要创建的密钥类型。可以使用:"rsa1"(SSH-1) "rsa"(SSH-2) "dsa"(SSH-2)
    -T output_file
                 测试 Diffie-Hellman group exchange 候选素数(由 -G 选项生成)的安全性。
    

    配置多个SSH-Key

    Git配置多个SSH-Key
    背景
    当有多个git账号时,比如:
    
    a. 一个gitlab,用于公司内部的工作开发;
    b. 一个gitee,用于自己的开发学习;
    
    解决方法
    生成一个公司专用的SSH-Key
    $ ssh-keygen -t rsa -C 'tec@aliyun.com' -f ~/.ssh/tec@qq.com
    生成一个gitee用的SSH-Key
    $ ssh-keygen -t rsa -C 'candy@qq.com' -f ~/.ssh/candy@qq.com
    在 ~/.ssh 目录下新建一个config文件,添加如下内容(其中Host和HostName填写服务器的域名,IdentityFile指定私钥的路径)
    # gitlab.aliyun.com
    Host giteegitlab.aliyun.com
        HostName giteegitlab.aliyun.com
        IdentityFile ~/.ssh/tec@qq.com
    # gitee
    Host gitee.com
        HostName gitee.com
        IdentityFile ~/.ssh/candy@qq.com
    4.用ssh命令分别测试
    
    $ ssh -T git@gitee.com
    这里以gitee为例,成功的话会返回内容
    ~$ ssh -T git@gitee.com
    Hi Tec! You've successfully authenticated, but GITEE.COM does not provide shell access.
    

    ~/.ssh/目录结构

         ~/.ssh/id_dsa
    
                 该用户默认的 DSA 身份认证私钥(SSH-2)。此文件的权限应当至少限制为"600"。
    
                 生成密钥的时候可以指定采用密语来加密该私钥(3DES)。
    
                 ssh将在登录的时候读取这个文件。
    
     
    
         ~/.ssh/id_dsa.pub
    
                 该用户默认的 DSA 身份认证公钥(SSH-2)。此文件无需保密。
    
                 此文件的内容应该添加到所有 DSA 目标主机的 ~/.ssh/authorized_keys 文件中。
    
     
    
         ~/.ssh/id_rsa
    
                 该用户默认的 RSA 身份认证私钥(SSH-2)。此文件的权限应当至少限制为"600"。
    
                 生成密钥的时候可以指定采用密语来加密该私钥(3DES)。
    
                 ssh将在登录的时候读取这个文件。
    
     
    
         ~/.ssh/id_rsa.pub
    
                 该用户默认的 RSA 身份认证公钥(SSH-2)。此文件无需保密。
    
                 此文件的内容应该添加到所有 RSA 目标主机的 ~/.ssh/authorized_keys 文件中。
    
  • 相关阅读:
    【每天一道PAT】1001 A+B Format
    C++ STL总结
    开篇
    happen-before原则
    java多线程的状态转换以及基本操作
    集合初始容量
    fail-fast机制
    Stack
    Iterator
    Vector
  • 原文地址:https://www.cnblogs.com/Candies/p/10051130.html
Copyright © 2011-2022 走看看