iOS 程序员程序员计算机微刊

Mac上新建SSH-Key

2017-08-09  本文已影响50人  简晰333

引导:


很多时候会碰到这种情况,自己有个人的 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.解决

⚠️重点
 查看系统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就可以啦

不知名开发者


上一篇下一篇

猜你喜欢

热点阅读