Mac上新建SSH-Key

作者: 简晰333 | 来源:发表于2017-08-09 22:29 被阅读50次

    引导:


    很多时候会碰到这种情况,自己有个人的 GitHub 账号,另外一个是工作的 GitHub 账号,或是我在同一台电脑上搭建两个Hexo博客对应两个 GitHub 账号;怎么配置 ssh-key 呢 ?

    GitHub 账号肯定要对应也自己的 ssh-key,既然有两个账号 ,肯定不能共用一个了,网搜的资料,生成ssh-key的方法都是直接全局配置,这样做缺点明显,每次配置都会覆盖原先的,也就是只能当前的可用,等想切换到另外一个账号的时候,又需要重新配置。所以如果你有所需,那就要按下面是走一遭;

    操作说明


    Mac上多个SSH-Key对应多个GitHub账号

    1. 前提:本地已经有了一套可以正常使用的git环境。
    2. 需求说明:同一台电脑MAC下使用多个SSH key 切换使用(或者用两个 GitHub 账号上传或下载代码,并且互不影响)。
    3. 示例:这里以托管Hexo(Pages)博客为例:A-GitHub 账号:myself@sina.com;B-GitHub 账号:mygithubidea@sina.com
    4. 达到效果:一台MAC配置两个 SSH key,分别将代码托管到 2个GitHub 和 2个Coding 上;

    新建ssh-key


    cd # 存储目录
    cd ~/.ssh  # 切换到ssh目录
    ls -al ~/.ssh  # 查看本电脑都有那些公钥私钥
    ssh-keygen -t rsa -b 4096 -C "myself@sina.com"
    Generating public/private rsa key pair.
    Enter file in which to save the key 
    (/Users/bksln/.ssh/id_rsa):/Users/bksln/.ssh/id_myself_rsa  
    # 注解:这里输入你要生成的ssh-key文件的路径和文件名,下面.pub里面存放的就是生成的秘钥,然后回车;设置文件名,如果不设置默认生成 id_rsa  和  id_rsa.pub)
    Enter passphrase (empty for no passphrase):  这里是让你设置密码
    Enter same passphrase again:确认密码 
    Your identification has been saved in /Users/bksln/.ssh/id_myself_rsa.
    Your public key has been saved in /Users/bksln/.ssh/id_myself_rsa.pub.
    The key fingerprint is:
    SHA256:qpGWPdFywqcr0ATVemOIX0ijn256U5g70JV5XQosuec “myself@sina.com”
    The key's randomart image is:
    +---[RSA 4096]----+
    |   ... o         |
    |  . o + o   .    |
    |   = = = o o     |
    |  o =.X.o o      |
    |   * O==S        |
    |  o O+.OE        |
    |   +=o=          |
    |   .Oo o         |
    |  .+.+.          |
    +----[SHA256]-----+
    

    按照上面的步骤生成 邮箱:mygithubidea@sina.com 对应的文件名:id_GitHubIdea_rsa 的公钥和私钥。到此:表示生成成功

    ls -al ~/.ssh  # 查看电脑上存在的所有的SSH keys
    
    { 
        .
        ..
        config
        id_GitHubIdea_rsa
        id_GitHubIdea_rsa.pub
        id_myself_rsa
        id_myself_rsa.pub
        id_rsa
        id_rsa.pub
        known_hosts
    }
    

    新建的ssh-key添加到ssh agent钥匙串中


    1. 查看系统ssh-key代理
    ssh-add -l
    Could not open a connection to your authentication agent.
    如果发现上面的提示,说明系统代理里没有任何key,执行如下操作
    exec ssh-agent bash
    如果系统已经有ssh-key 代理 ,执行下面的命令可以删除。"不删除也可以"
    ssh-add -D
    
    1. 分别把 .ssh 目录下的2个私钥添加到钥匙串中 ssh-agent
    ssh-add -K ~/.ssh/id_myself_rsa 
    ssh-add -K ~/.ssh/id_GitHubIdea_rsa
    

    在git服务器(GitHub&Coding)上添加公钥


    1. 以 Github 为例:https://github.com/ -> Your profile -> edit profile -> SSH and GPG keys -> new SSH key
    2. 查看 ssh keys(.pub 结尾)
    sudo cat id_myself_rsa.pub # 查看ssh keys 
    sudo cat id_GitHubIdea_rsa.pub
    
    1. 补充查看结果:(切记这里用的是以 ssh-rsa 开头 -- == “myself@sina.com” 结尾的)
    ssh-rsa AABAB3NzaC1yc2EAAAADAQABGAAEAQC8ZP/Lljeo+QD2tF+P7phAvkJC1TGNL6fF7 KOmSkPqvsH/kMu/N3MTDvd4NnbIPvUsukUROrQP1XLlYRG3q
    6YupEdhDJ054D9w4hamne5BDfAM+B9TiBFfcZZJA1F/tZZbGnzskdarsxFfo5BOfAh622Q
    M9yfYZYnb DEN2mqcbidkNHAuvUMDRwN6yZgpPWhgWd4JLOE/Zdile6ucgezbP6NRn2ZXDW2/tPEcT9GIiTZs3/q2mBfAyUzRRgAl1v1pT0d+NgX1n
    7876jHkcVv7uj1NROWnp4rxJ/A8URXN3g6XSCOdHL71g2oBgCktBmMMDT1VbJth0Y7V6K1HXhvsPPR0+axSDi9NRY+41yt+dig+nBk1FN5tA7e+tQCSD
    Nh3U92U18JTUX4Ghia4/atX++7jaNtxDTucRN9PLVfN5fg1w9ae2tP26+iherrQ42gRg4ysXZ6mmXTbsx+nU1Yy7zX9xH9Lg9txg7G0ey5+U+o53RciYLO
    foX9V9YSr9GdR3uuj66YA4Nk7jWfTOBuZD6AruVzmhNoNdvuSyfEZHJ
    atBjGMDOwRA8naDvc38HR2aDO375QpXpgf2gataoZDv+ZB8RFsMi3zVq9ttXCNWlxLkcdCkLFZ2pQB
    3GOprbfL0/Gf56aNZVh1w== “myself@sina.com”
    

    配置config文件


    1. 先终端执行 open ~/.ssh/config 查看config 配置文件信息,如果不存在,就vim ~/.ssh/config ,在 .ssh 目录创建 config 配置文件,输入如下配置信息,参考我的示例:
      笔者这里使用的是,(Agithub 和 ACoding) 及 (Bgithub 和 BCoding) ,对应绑定的是同一个邮箱;
    # Agithub (myself@sina.com)
    Host agithub #主机地址起别名
        HostName github.com
        User git
        IdentityFile ~/.ssh/id_myself_rsa
    # ACoding (myself@sina.com)
    Host acoding
        HostName git.coding.net
        User git
        IdentityFile ~/.ssh/id_myself_rsa
    
    
    # Bgithub (mygithubidea@sina.com)
    Host bgithub
        HostName github.com
        User git
        IdentityFile ~/.ssh/id_GitHubIdea_rsa
    # BCoding (mygithubidea@sina.com)
    Host bcoding
        HostName git.coding.net
        User git
        IdentityFile ~/.ssh/id_GitHubIdea_rsa
    
    # 配置文件参数
    # Host : 重点:⚠️建一个别名,新建的帐号使用这个别名做克隆和更新
    # HostName : 要登录主机的主机名
    # User : 登录名
    # IdentityFile : 指明上面User对应的identityFile路径
    

    验证配置的config文件


    ssh -T agithub
    Hi {你github用户名}! You've successfully authenticated, but GitHub does not provide shell access.
    
    ssh -T bgithub
    Hi {你github用户名}! You've successfully authenticated, but GitHub does not provide shell access.
    
    这就说明,OK,大功告成 ~ ~
    

    拉取代码说明


    一个ssh key 之前,站点配置文件这些写:
    coding: git@git.coding.net:bksln/Acoding.coding.me.git
    github: git@github.com:bksln/Agithub.github.io.git
    
    两个ssh key 之后,站点配置文件这些写:记得替换如:( 别名acoding = git@git.coding.net  )
    coding: acoding:bksln/Acoding.coding.me.git
    github: agithub:bksln/Agithub.github.io.git
    

    访问权限

    Please make sure you have the correct access rights and the repository exists.解决

    • 查看配置 git config --list
    ⚠️重点
     查看系统ssh-key代理
     ssh-add -l
     Could not open a connection to your authentication agent.
     如果发现上面的提示,说明系统代理里没有任何key,执行如下操作
     exec ssh-agent bash
     如果系统已经有ssh-key 代理 ,执行下面的命令可以删除。
     ssh-add -D
     
     分别把.ssh目录下生成的私钥全部添加到钥匙串中ssh-agent
     ls -al ~/.ssh # 查看电脑上存在的所有的SSH-keys
     ssh-add -K ~/.ssh/id_tencent_rsa
    - - -
     配置用户名和邮箱
     git config user.name "用户名"
     git config user.email "邮箱地址"
     
     配置全局用户名和邮箱
     git config –global user.name "用户名"
     git config –global user.email "邮箱地址"
    

    本地Git保存用户名密码


     0. ⚠️重点
     查看系统ssh-key代理
     ssh-add -l
     Could not open a connection to your authentication agent.
     如果发现上面的提示,说明系统代理里没有任何key,执行如下操作
     exec ssh-agent bash
     如果系统已经有ssh-key 代理 ,执行下面的命令可以删除。
     ssh-add -D
     
     1.分别把.ssh目录下生成的私钥全部添加到钥匙串中ssh-agent
     ls -al ~/.ssh # 查看电脑上存在的所有的SSH-keys
     ssh-add -K ~/.ssh/id_tencent_rsa
     ssh-add -K ~/.ssh/id_myself_rsa
     
     2.配置本地git仓库的配置信息
     $ cd /Users/sunhui/Documents/Point #首先进入到本地的git仓库
     $ open .git/config
     $ vim .git/config # 没有的话再创建
     
     3.修改如下
    [core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = true
    [remote "origin"]
        # 这里也可以不指定那个url,意思就是不管使用git push哪个远程都不需要密码
        url = 你远端的url地址,就是你想使用git push到这个地址的时候不需要输入密码.
        fetch = +refs/heads/*:refs/remotes/origin/*
    [branch "master"]
        remote = origin
        merge = refs/heads/master
    # 主要是后面这两行,如果不想保存,则删除即可
    [credential]
        helper = store
     
     4.如果想要github 每次需要输入passphrase for key id_rsa 的解决办法
     $ ssh-keygen -p # 删除掉之前的passphrase密码就可以了,当提让你输入新的密码的时候,按enter就可以啦
    

    不知名开发者


    相关文章

      网友评论

        本文标题:Mac上新建SSH-Key

        本文链接:https://www.haomeiwen.com/subject/cikqrxtx.html