大家好! 欢迎来踩踩我的个人网站 fzyt.fun

写在前面

本文根据 macOs 编写

当我们 githubgitee 都有账号、github 有多个账号的时分,就会出现 ssh key 装备问题,本文用以处理多个代码托管渠道和一个代码渠道多个账号的 ssh key 装备问题。

场景一:

大学的时分创建了自己的 github 账号,查找了各种材料来装备 ssh key

该场景下面的 根本装备 能够处理

场景二:

工作了渐渐的发现公司的会与自己 githubssh key 冲突。

该场景下面的 ssh 装备不同域名 能够处理

场景三:

为了在 github 上面和他人一起开发代码,创建了第二个 github 账号,又产生了冲突。

该场景下面的 装备多个账号 ssh key 能够处理

根本装备

ssh 介绍

SSHSecure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较牢靠,专为长途登录会话和其他网络服务提供安全性的协议。

github ssh keys

github 利用 ssh 协议进行安全的提交代码,需要装备 ssh keys

装备流程

1.运用 ssh-keygen 在本地生成 ssh 公钥私钥

(base) ➜  .ssh ssh-keygen -t rsa -C "youer_email@example.com"
Generating public/private rsa key pair.
# 下面这步是让你输入你密钥保存方位和名
# 例如输入 /Users/fzyt/.ssh/github/id_rsa_github 回车(需要提前创建 /Users/fzyt/.ssh/github/ 文件夹)
Enter file in which to save the key (/Users/fzyt/.ssh/id_rsa): 
# 下面这步是设置密钥文件的查看暗码,结合自己情况设置,不设置回车即可
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

# id_rsa_github 是私钥,id_rsa_github.pub 公钥
(base) ➜  github ls
id_rsa_github     id_rsa_github.pub

2.装备 ssh config

  • /Users/fzyt/.ssh 新建 config 文件
  • 装备 github 相关信息
# github
Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github/id_rsa_github

# 装备文件参数
# Host : 别号,Host 能够看作是一个你要识别的形式,对识别的形式,进行装备对应的的主机名和ssh文件
# Port : 端口 (22(default))
# HostName : 要登录主机的主机名
# User : 登录名
# PreferredAuthentications : 强制运用 Public Key 验证 (no(default)/yes)
# IdentitiesOnly : 只承受SSH key 登录
# IdentityFile : 指明上面User对应的 identityFile 路径 (就是私钥)

装备好了能够运用如下指令测验

(base) ➜  .ssh ssh -T git@github.com
Hi youer_name! You've successfully authenticated, but GitHub does not provide shell access.

3.将生成的公钥增加到 github settings 上

  • 运用 cat 指令将公钥复制下来
(base) ➜  github cat id_rsa_github.pub
ssh-rsa ...
...
...= youer_email@example.com
  • 翻开 github 点击头像选择 Settings
  • 点击左侧菜单中的 SSH and GPS keys
  • 点击 New SSH key 将公钥复制到 Key 中,Title 起个姓名
  • 点击 Add SSH key

4.clone 代码

接下来 clone 代码即可

git clone git@github.com/test.git

ssh 装备不同域名

  • 完结根本装备,如已装备 github ssh key
  • 生成 gitee ssh key,即在 /Users/fzyt/.ssh/gitee/ 下有有用的公钥私钥
  • /Users/fzyt/.ssh/config 中增加以下装备
# gitee
Host gitee.com
    HostName gitee.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/gitee/id_rsa_gitee
  • 运用指令测验
(base) ➜  .ssh ssh -T git@gitee.com
Hi youer_name! You've successfully authenticated, but GITEE.COM does not provide shell access.

装备多个账号 ssh key

  • 完结根本装备,如已装备一个工作账号的 github ssh key
  • 生成私有的 github ssh key,即在 /Users/fzyt/.ssh/gitee/ 下有有用的公钥私钥
  • /Users/fzyt/.ssh/config 中增加以下装备
# github work
Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github/id_rsa_github_work
# github me
Host me.github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github/id_rsa_github_me
  • 运用指令测验
(base) ➜  .ssh ssh -T git@github.com
Hi youer_name! You've successfully authenticated, but GitHub does not provide shell access.
(base) ➜  .ssh ssh -T git@me.github.com
Hi youer_name! You've successfully authenticated, but GitHub does not provide shell access.
  • clone 代码
git clone git@github.com/test.git
git clone git@me.github.com/test.git

能够将 me 改成别的以到达装备多个账号 ssh key 的目的