Mac:管理多套 ssh-key

说明
首次发布 2019年01月12日
最近更新 2019年05月04日
步骤一:生成SSH公钥
    1. 生成 ssh-key 的命令:
    ssh-keygen -t rsa -C "[email protected]"  
    

    接下来,输入和显示大致是这样子,就表示生成成功了。

    ssh-keygen -t rsa -C "[email protected]" 
    Generating public/private rsa key pair.
    # 注意:如果这里直接回车,默认会是 `id_rsa`,存储在 `/Users/LynnZhang  /.ssh/`目录下
    Enter file in which to save the key (/Users/LynnZhang/.ssh/id_rsa): /Users  /LynnZhang/.ssh/id_her_rsa    
    Created directory '/Users/LynnZhang/.ssh'.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /Users/LynnZhang/.ssh/id_her_rsa.
    Your public key has been saved in /Users/LynnZhang/.ssh/id_her_rsa.pub.
    The key fingerprint is:
    SHA256:CwJi97FAFKa3ObvSv18NqCZUOnsYQKuw9Z9hdySSczg     [email protected]
    The key's randomart image is:
    +---[RSA 2048]----+
    | ...=..          |
    |. =  .  E        |
    |o=o+ oE o .      |
    |+++oB o=.o       |
    |o  Ooo+.S..      |
    |  . C+.= oo      |
    |  .= .+o .. .    |
    | . .=   .        |
    |  ...o..         |
    +----[SHA256]-----+
    
    

    其中, id_her_rsa.pub 为公钥,id_her_rsa 为私钥。
    或者,直接指定存储路径和名称:

    ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitee -C "[email protected]"
    

    然后,

    • a. 要么在终端执行命令查看公钥,
      cat ~/.ssh/id_her_rsa.pub
      
    • b. 要么直接进入文件夹 /Users/LynnZhang/.ssh/ 查看。
    1. 添加生成的 public key 添加到公钥。
    1. 由于我们给生成的公私钥进行了命名,而没有使用默认的 id_rsa,因此我们还需要将其添加到 ssh管理,命令:
    ssh-add ~/.ssh/你的名字
    
    1. 然后再执行下面命令,
    ssh -T gitee.com
    

    会提示

    The authenticity of host 'gitee.com (114.211.117.14)' can't be established.
    ECDSA key fingerprint is SHA256:DERT5Kn/eye1W8icdBgrQp+KkGDeRgbVr17bmjey0Wc.
    Are you sure you want to continue connecting (yes/no)?
    

    输入 yes,会在 ~/.ssh 文件夹下生成一个 known_hosts。按常理说,进行到这儿就该结束了。但为了操作更简便,接下来我们进行步骤二。

步骤二:配置 ~/.ssh/config文件 和 使用别名
    1. 执行下面命令,生成 config 文件:
    touch ~/.ssh/config
    
    1. 配置~/.ssh/config如:
    # 设置别名,之后就可以通过 `ssh lynn`进行连接
    Host lynn 
    # 在没设置别名的情况下,使用 `ssh -T gitee.com`
    HostName gitee.com
    User 人民重重
    # 指定身份文件'私钥'
    IdentityFile ~/.ssh/id_rsa_gitee 
    
    
    # 设置别名,之后就可以通过 `ssh lynn`进行连接
    Host zhang 
    # 在没设置别名的情况下,使用 `ssh -T gitee.com`
    HostName gitee.com
    User 人民重重
    # 指定身份文件'私钥'
    IdentityFile ~/.ssh/id_rsa_gitee 
    

    连接的使用:

    ssh lynn
    ssh zhang
    

    这样,如果SSH的参数改变的话,修改配置文件就行了,命令不变。

最终~/.ssh目录下,应该是这个样子:

Mac:管理多套 ssh-key_第1张图片


FQA:

    1. 报错:[email protected]: Permission denied (publickey). fatal: Could not read from remote repository.
      答:请参考 步骤一 第3条。
    1. 报错:The authenticity of host 'gitee.com (120.55.226.24)' can't be established.
      答:这是因为缺少了known_hosts文件,请参考 步骤一 第4条。

如果你按照我上面所写步骤操作,相信不会有其他问题。


拓展:

一、设置多个远程仓库

  • 1、查看当前远程仓库
    git remote -v
    
  • 2、添加远程仓库:添加命令中的 github 是远程仓库的名字,可以任意设置,只要不和已有的远程仓库名字相同即可。
    git remote add github ${github上仓库的地址}
    
  • 3、向指定仓库的指定分支 push,在执行过下面命令之后,之后使用 git push 也将向这个仓库 push
    git push -u ${remote_name} ${branch_name}
    

二、关于 ssh-keygen 命令的说明如下:

ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa]
                  [-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] [-U]
                  [-D pkcs11_provider] [-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 ...
参考:

生成/添加SSH公钥

你可能感兴趣的:(Mac:管理多套 ssh-key)