当前位置: 首页 > news >正文

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.comHostName github.comUser gitIdentityFile ~/.ssh/id_rsa#Work GitHub
Host github.com-workHostName github.comUser gitIdentityFile ~/.ssh/id_rsa_work

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

清除credential.helper设置

 git config --global --unset credential.helpergit config --system --unset credential.helpergit 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 了。

http://www.lryc.cn/news/331190.html

相关文章:

  • dm8修改sysdba用户的密码
  • 基于boost准标准库的搜索引擎项目
  • 语言模型进化史(下)
  • 设计模式之旅:工厂模式全方位解析
  • 大数据时代的生物信息学:挖掘生命数据,揭示生命奥秘
  • 微信小程序开发【从入门到精通】——页面导航
  • 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记15:PWM输出
  • SQLite中的隔离(八)
  • Zabbix6 - Centos7部署Grafana可视化图形监控系统配置手册手册
  • Electron无边框自定义窗口拖动
  • vue3+echarts:echarts地图打点显示的样式
  • vue3从精通到入门7:ref系列
  • 灵动翻译音频文件字幕提取及翻译;剪映视频添加字幕
  • 在Gitee上创建新仓库
  • linux 配置NFS
  • 大疆御Pro(一代)更换晓spark摄像头评测
  • 【小技巧】gitlab怎么在每次git push的时候不用输入账号密码?使用 SSH 密钥 的原理是什么?
  • 笔记: JavaSE day15 笔记
  • 【Golang星辰图】数据处理的航海家:征服数据海洋的航行工具
  • 容器网络测试关键问题
  • 6、Cocos Creator 2D 渲染组件:​Sprite 组件​
  • 算法沉淀——动态规划篇(子数组系列问题(上))
  • 通知中心架构:打造高效沟通平台,提升信息传递效率
  • 【Arduino使用SNR9816TTS模块教程】
  • 牛客练习赛123(A,B,C,D)
  • docker部署-RabbitMq
  • 【智能算法】蜜獾算法(HBA)原理及实现
  • 9、鸿蒙学习-开发及引用静态共享包(API 9)
  • [Pytorch]:PyTorch中张量乘法大全
  • 【软考】防火墙技术