Git —— 关于创建多对非对称密钥时对不同服务器的匹配问题

《工欲善其事,必先利其器》—— 既然点进来了,麻烦你看下去,希望你有不一样的收获~

《 前言 》

大概是半年前,我写过一篇关于 git 连接托管平台提示 permission denied 的文章,大概是 —— 《Git ---- 解决coding:Permission denied(publickey)》,感兴趣的朋友可以去看看。

当时我在写文章时,考虑到 C 站这个平台的尿性,压根都没想去研究这其中的缘由。不过这件事也一直在我的心里堵着,本身我自己写作时就不喜欢写那些没头没尾的文章,搞得云里雾里的。因为即便帮助其他人解决了问题之后,如果也不能掌握这个知识点的话,那么我会宁愿不写。

那么今天我就来填这个坑 [托腮]。

一、为什么需要多对密钥?

由于工作的原因,团队要求使用码云作为代码托管平台。而我本人则是习惯使用 Coding 平台托管自己的学习代码,并且有时也会需要把部分自学的代码开源到 GitHub 上(虽然并没有什么价值 [托腮])。所以,为了便于管理和区分各个平台服务器的账户绑定的非对称密钥对,我采用了每个平台各自管理自己对应密钥的管理方式。

二、管理多对密钥所产生的问题

区分管理固然很清晰,但随之而来的问题就是,在同一台本地主机的情况下,除了 id_rsa 绑定的托管平台,其他平台,都会出现 permission denied 的情况。这是由于 git 在没有会默认选取 id_rsa 作为本机的非对称密钥对的私钥而导致的。

因此,当我们打开 ssh 交互面板时,如果此时我们想尝试连接其他托管平台的服务器(例如上面提及的 Coding、GitHub等),就会出现拒绝访问的情况。因为非对称密钥对,只有当公钥和私钥解密比较结果一致之后,才可以允许用户登陆本服务器。

三、如何解决密钥对匹配不一致的问题?

  • 临时会话时短暂指定选取的本机私钥

打开 SSH 会话时,选取私钥存入内存中,以上图为例,我们选取 Coding 私钥:

eval `ssh-agent`
ssh-add '~\.ssh\coding_rsa'

或者:

$(ssh-agent)
ssh-add '~\.ssh\coding_rsa'

这样,我们就能正确的匹配到想要沟通的服务器上。

四、讲讲 ssh-agent 和 ssh-add

可能现在你会好奇 ssh-agent 是做什么的?

其实很简单,私钥设置了密码以后,每次使用都必须输入密码,有时让人感觉非常麻烦。

ssh-agent 命令就是为了解决这个问题而设计的,它让用户在整个 Bash 对话(session)之中,只在第一次使用 SSH 命令时输入密码,然后将私钥保存在内存中,后面都不需要再输入私钥的密码了。

ssh-add 命令则是用来将私钥加入 ssh-agent,仅此而已。

参考文章:

  • 《SSH教程》—— 阮一峰

Git —— 关于创建多对非对称公钥时对不同服务器的匹配问题相关推荐

  1. 代码管理之SVN服务器及Git的创建与使用

    ---恢复内容开始--- SVN和Git的都是用于项目配置项管理的工具,区别很大,各有千秋.但他们之间的区别并非今天我要谈论的重点,因为这些有很多成熟的文章博客介绍.所以今天我主要是介绍一些SVN和G ...

  2. git的创建分支与合并分支(5)

    小结里面的name参数为分支的名称. 在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线(时间线由近及远),这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分 ...

  3. Centos7中创建RSA非对称密钥对及搭建私有CA并为客户端颁发证书

    Centos7中创建RSA非对称密钥对及搭建私有CA并为客户端颁发证书 1.在centos7中使用gpg创建RSA非对称密钥对 [13:32:55 root@centos7 data]#gpg --g ...

  4. Cramer-Shoup非对称公钥密码体制

    Cramer-Shoup非对称公钥密码体制 它的安全性基于决策性Diffie-Hellman假设的计算难度(广泛假设但未证明).由Ronald Cramer和Victor Shoup于1998年开发 ...

  5. git 如何创建分支并且同步到远程

    要在 Git 中创建分支并将其同步到远程,您可以按照以下步骤: 创建分支 命令 git branch 可以用来列出本地所有的分支.使用以下命令创建一个新的分支,并切换到该分支: git checkou ...

  6. 咸鱼笔记—git版本创建与回退

    咸鱼笔记-git版本创建与回退 git版本创建与回退 使用 工作区和暂存区 工作区(Working Directory) 版本库(Repository) 管理修改 撤销修改 对比文件的不同 删除文件 ...

  7. GitKraken Crack,Git GUI 客户端发布板和时间线

    GitKraken Crack,Git GUI 客户端发布板和时间线 GitKraken 的 Git GUI 是一个跨平台的 UI,有助于理解 Git.您可以轻松打开存储库.设置收藏夹并将它们组织到项 ...

  8. 如何将git服务器同步到本地文件夹,使用git在服务器上部署git仓库并实现提交代码时同步代码到生产环境...

    最近由于需要对正在运行的系统进行新功能添加,本来是可以通过github进行代码维护,但是由于这个项目涉及一些问题,目前还不能开源,所以只能是手动覆盖bug文件,生产环境上的代码反而是最新的了. 之前有 ...

  9. SAP MM初阶创建服务采购订单时订购单位和物料组的缺省值

    SAP MM初阶创建服务采购订单时订购单位和物料组的缺省值 执行事务代码ME21N 创建采购订单,输入了单据类型,供应商,组织结构相关的数据,账户分配类别指定为K.如下图, 当把item catego ...

最新文章

  1. shell 语法简介(转载)
  2. eclipse 无法使用注解的两个解决方法
  3. java getSource()和 getActionCommand()
  4. What happens when clicking interaction record work center?
  5. 多目标分类的混淆矩阵_用于目标检测的混淆矩阵
  6. WP8.1学习系列(第九章)——透视Pivot开发指南
  7. 使用shell脚本或命令行添加、删除 crontab 定时任务
  8. 浮点类型误区 “!=”
  9. 易语言在线播放器源码php,易语言写出自绘播放器列表
  10. Android开发EasyAr初试
  11. 当当1024购书活动,100张4折优惠券,薅羊毛啦!
  12. 新巴塞尔资本协议(中英文)
  13. 人生苦难重重,如何解决人生的问题?| 读《少有人走的路:心智成熟的旅程》
  14. js数组方法及其返回值(简单用法)
  15. phpstudy mysql恢复数据_MySQL_详解MySQL误操作后怎样进行数据恢复,一、开启binlog。 首先查看binlo - phpStudy...
  16. 增值税/所得税 概念与区别
  17. java敏感词屏蔽器,“敏感词过滤”功能设置
  18. linux 设备命名规则,cisco设备命名规则
  19. 51nod 1597 有限背包计数问题 DP 根号分治
  20. fread函数 和 feof函数

热门文章

  1. 【转载】完美的发出商品方案-SAP软件中发出商品的十个方案
  2. SQL Server常用升级方法
  3. DTOJ 4848. 交通网络
  4. 蓝海与红海--有感于软件创新
  5. AcWing 165 小猫爬山
  6. 【隧道篇 / IPsec】(5.2) ❀ 02. IPsec - 固定IP宽带 to 固定IP宽带 (接口模式) ❀ FortiGate 防火墙
  7. 利用mklink符号链接给C盘瘦身
  8. matebook x pro 2019 安装ubuntu 16.04
  9. 小学计算机课认识键盘,小学信息技术认识键盘教学设计微课视频教学反思教材分析学情分析教学课程设计......
  10. 《降临》作者特德·姜:ChatGPT 是互联网的有损压缩