Mac上新建SSH-Key
2017-08-09 本文已影响50人
简晰333
引导:
很多时候会碰到这种情况,自己有个人的 GitHub 账号,另外一个是工作的 GitHub 账号,或是我在同一台电脑上搭建两个Hexo博客对应两个 GitHub 账号;怎么配置
ssh-key
呢 ?GitHub 账号肯定要对应也自己的
ssh-key
,既然有两个账号 ,肯定不能共用一个了,网搜的资料,生成ssh-key的方法都是直接全局配置,这样做缺点明显,每次配置都会覆盖原先的,也就是只能当前的可用,等想切换到另外一个账号的时候,又需要重新配置。所以如果你有所需,那就要按下面是走一遭;
操作说明
Mac上多个SSH-Key对应多个GitHub账号
- 前提:本地已经有了一套可以正常使用的git环境。
- 需求说明:同一台电脑MAC下使用多个SSH key 切换使用(或者用两个 GitHub 账号上传或下载代码,并且互不影响)。
- 示例:这里以托管Hexo(Pages)博客为例:A-GitHub 账号:myself@sina.com;B-GitHub 账号:mygithubidea@sina.com
- 达到效果:一台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钥匙串中
- 查看系统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 目录下的2个私钥添加到钥匙串中 ssh-agent
ssh-add -K ~/.ssh/id_myself_rsa
ssh-add -K ~/.ssh/id_GitHubIdea_rsa
在git服务器(GitHub&Coding)上添加公钥
- 以 Github 为例:https://github.com/ -> Your profile -> edit profile -> SSH and GPG keys -> new SSH key
- 查看 ssh keys(.pub 结尾)
sudo cat id_myself_rsa.pub # 查看ssh keys
sudo cat id_GitHubIdea_rsa.pub
- 补充查看结果:(切记这里用的是以 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文件
- 先终端执行
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就可以啦