github 多个账号共享ssh key 的设置方法

确认本机是否已有ssh key

首先确认自己系统内有没有 ssh key。
bash复制代码cd ~/.ssh

ls *.pub # 列出所有公钥文件

id_rsa.pub

若有,确认使用当前 key 或者生成新 key,若没有,生成新 key。由于我需要登录两个帐号,所以在已经存在的 key 的基础上,再生成一个 key。
生成 ssh key

ssh-keygen -t rsa -C "your-email-address"

-t 是使用的算法,一般都选择 rsa -C 为备注,一般以邮箱作为备注,提示保存文件时以 id_rsa_work 保存,用于区分第一个密钥id_rsa。
至此,我的 ~/.ssh 文件夹内共有4个文件。

├── id_rsa
├── id_rsa_work
├── id_rsa_work.pub
├── id_rsa.pub
└── known_hosts

其中以 .pub 结尾的为公钥文件,用于填写在GitHub网站,同名不带 .pub 后缀的为私钥文件,自己保存不要泄漏,known_hosts 文件为已知 host 缓存,目的是加快 ssh 访问速度。

添加 ssh key

为 GitHub 添加 ssh key
登录 GitHub 在账户
Settings > SSH and GPG keys > New SSH key > Add key 将之前生成的 ssh key 的 pub 文件中的内容粘贴进去,另一个账户也如法炮制。
为本机添加 ssh key

ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa_work

如果成功会看到 Identity added 的反馈。

检查ssh key

关于ssh有一个奇怪的三角恋。 在这段特殊的浪漫故事中有三个角色:

ssh-agent命令

  • 保存身份验证密钥(身份)并与 ssh 共享的程序
    ssh命令
  • 键入 ssh 时使用的远程登录客户端
    ~/.ssh/config文件 - 可用于向 ssh 客户端提供选项的配置文件

让我们看看这些是如何一起玩的。

  • 第一站,ssh-agent。 这为您保存着您的钥匙。 在 ssh-agent (man ssh-agent) 的使用说明中:多个身份可以同时存储在 ssh-agent 中,如果存在,ssh 将自动使用它们。

这意味着:当 ssh 向 ssh-agent 询问身份时,ssh 可能会收到多个身份,并且会尝试使用所有身份。

那么你怎么知道代理有哪些身份呢? 奇怪的是,列出所有身份的命令是

ssh-add -L。

运行这个命令,可以看到我们所有的密钥,确认我们刚刚新增的密钥已经在ssh-agent管理的身份列表中。
现在我们知道 ssh-agent 将提供多个密钥。

ssh 如何使用这些密钥/身份? 这一次,让我们看一下
man ssh_config

除非设置了 IdentitiesOnly,否则身份验证代理表示的任何身份都将用于身份验证。

这实际上是说,ssh 会贪婪地尝试它提供的每个身份,除非你有使用 IdentitiesOnly 设置,比如:

ssh -o 'IdentitiesOnly yes' -i keypair.pem ec2-user@some-amazon-host

生成配置文件

生成配置文件用于根据情况选择不同的 ssh key。

touch ~/.ssh/config
vi config

写入内容

#Default GitHub
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

#Work GitHub
Host github.com-work
   HostName github.com
   User git
   IdentityFile ~/.ssh/id_rsa_work

两个配置不同的地方在于 Host 和 IdentityFile,第二处 Host 填写的 github.com-work 是为了区分默认配置。

清除credential.helper设置

 git config --global --unset credential.helper
 git config --system --unset credential.helper
 git config --local --unset credential.helper

测试SSH连接

使用以下命令测试SSH连接。
ssh -T -v github.com-work

确认得到如下响应:

Hi Your-name! You've successfully authenticated, but GitHub does not provide shell access.

配置本地仓库

对于本地已存在的仓库,查看remote。
git remote -v

添加/更改remote,不能使用HTTPS形式的remote,必须使用如下SSH形式。

git remote add origin git@github.com-work:username/reponame.git

如果已经存在remote,使用set-url 更改origin
git remote set-url origin git@github.com-work:username/reponame.git

git 就会依据 Hostname 选择需要的账户进行 push 和 pull 了。

相关推荐

  1. github 账号共享ssh key 设置方法

    2024-04-04 05:24:03       33 阅读
  2. 配置 SSH 管理 Git 仓库和以及 Github 账号

    2024-04-04 05:24:03       32 阅读
  3. git 配置账号(码云、github、gitlab)

    2024-04-04 05:24:03       52 阅读
  4. 本地计算机连接两Github账号

    2024-04-04 05:24:03       57 阅读
  5. Windows下配置账号git ssh

    2024-04-04 05:24:03       50 阅读
  6. Facebook广告账户被封禁原因及解决方法

    2024-04-04 05:24:03       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-04 05:24:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-04 05:24:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-04 05:24:03       82 阅读
  4. Python语言-面向对象

    2024-04-04 05:24:03       91 阅读

热门阅读

  1. 【记录】海康相机(SDK)二次开发时的错误码

    2024-04-04 05:24:03       120 阅读
  2. Generative AI for Beginners

    2024-04-04 05:24:03       38 阅读
  3. WPS二次开发系列:WPS SDK初始化

    2024-04-04 05:24:03       39 阅读
  4. 智慧工地安全+绿色施工方案

    2024-04-04 05:24:03       35 阅读
  5. iOS object-c self关键字总结

    2024-04-04 05:24:03       46 阅读
  6. qT 地图显示飞机轨迹

    2024-04-04 05:24:03       38 阅读
  7. GIT命令总结

    2024-04-04 05:24:03       32 阅读
  8. 常见的sql优化策略

    2024-04-04 05:24:03       40 阅读