网站首页 > 博客文章 正文
将安全备份需求降低到单个密钥文件。
一旦使用两个或三个以上的SSH密钥,管理它们就会变得更加复杂。在本文中,我将解释如何使用控制文件管理多个SSH密钥,以及如何进行更改以将其作为GPG身份验证子项进行管理。我还将展示如何识别GPG身份验证密钥,以防它们随着时间的推移而累积并且你没有记录笔记。
为什么有多个SSH密钥?
考虑像物理钥匙一样的SSH密钥,将看到拥有多个密钥的原因。你不希望你的车和你的房子用同一把钥匙。如果你的钥匙被盗,小偷可以使用所有东西。就像你的汽车和房子一样,你可能想要为每个项目用例分别设置密钥,就像生活中一样。
当你为客户工作时,拥有多个密钥也很有用。有些客户可能会给你一个特定的密钥,而其他客户可能会要求你在项目结束时交出所有帐户,密码和密钥。
SSH如何管理多个密钥?
一旦你有多个SSH密钥,就会发现你需要在你的?/.ssh/config中添加IdentifyFile行来获得SSH,以便为正确的服务器提供正确的密钥。这是因为大多数服务器仅在几次SSH密钥尝试后才会断开连接。我有七个密钥,所以我绝对需要这个。
例如,此条目指定当我在Fedora项目中使用计算机时,我的用户名是“bex”,我希望使用我的Fedora SSH密钥。引用的文件是私钥文件。
Host *.fedoraproject.org
User bex
IdentityFile ~/.ssh/fedora_id_rsa
如果没有IdentifyFile关键字,SSH将只是连续尝试每个密钥。
教SSH以管理多个GPG身份验证密钥
使用GPG验证SSH时,你不再拥有私钥文件。因此,上面的配置将不再起作用。为了使其工作,你必须做一些不同的事情来识别应该使用的密钥。值得庆幸的是,SSH提供了一种解决方法:你可以在IdentifyFile行上引用公钥。
只需修改?/.ssh/config即可引用正确的公钥。通常,这就像在每个IdentifyFile行的末尾添加pub一样简单。不要忘记确保将公钥文件设置为仅用户可读。
这意味着你需要拥有可用于身份验证密钥的公钥文件。如果你没有保存它们(或之前有它们),你可以从ssh-add -L命令获取指纹。
标识特定的身份验证子项
一旦创建了多个身份验证子密钥,就希望能够识别它们,以便你可以将正确的公钥提供给正确的服务器并生成正确的IdentifyFile条目。不幸的是,GPG不支持子键的注释或名称。因此,你只能从gpg2命令获取关键哈希和夹点的列表,以及来自ssh -add的一组无与伦比的私有和公共指纹。
有两种方法可以识别你的密钥。你可以从SSH公钥指纹开始查找GPG keygrip,也可以从GPG子项哈希开始查找SSH公钥指纹。
SSH公钥指纹到GPG keygrip
首先找到要识别的公钥指纹。可以通过运行ssh -add -L来完成此操作。此示例适用于第一个指纹。将公钥指纹保存到文件,下一步需要这样做。
$ ssh-add -L | head -1 > key
现在需要SSH指纹的MD5格式,可以从ssh-keygen获取该格式。
$ ssh-keygen -l -E md5 -f key
2048 MD5:9e:98:82:87:5d:a4:fe:e3:8a:9c:db:aa:59:5b:30:ac (none) (RSA)
将MD5 SSH指纹与密钥匹配,如gpg -agent的keyinfo命令所示。
$ gpg-connect-agent 'KEYINFO --list --ssh-fpr' /bye | fgrep
9e:98:82:87:5d:a4:fe:e3:8a:9c:db:aa:59:5b:30:ac
S KEYINFO 9EEA76057C168686EAE8B807845326D7F60FB1C4 D - - - P
MD5:9e:98:82:87:5d:a4:fe:e3:8a:9c:db:aa:59:5b:30:ac - -
这将返回多个数据字段。重要的是第三个元素,即GPG keygrip。从这里,使用gpg2 -K --with-keygrip很容易识别你的特定身份验证子项。
GPG子键哈希到SSH公钥指纹
首先找到要识别的键的子键哈希。可以通过运行gpg2 -K --with-subkey-fingerprint来完成此操作。
$ gpg2 -K --with-subkey-fingerprint
...
ssb rsa2048 2019-03-16 [A]
941BE28372F6759AB7073766E0A70B46BA68E808
将其转换为公钥指纹非常简单; 再次使用gpg2。
$ gpg2 --export-ssh-key 941BE28372F6759AB7073766E0A70B46BA68E808
ssh-rsa AAAAB3NzaC1yc...MQJ3FK3 openpgp:0xBA68E808
你会注意到此输出中有一个注释openpgp:0xBA68E808。在所有情况下都不能保证这一点,因为它取决于使用GPG的确切方式。如果你的输出包含它,则可以轻松识别GPG密钥和SSH指纹关系;但是你不应该依赖它总是可用的。
我鼓励你考虑记录.gnupg /sshcontrol文件中的关系或公钥文件中的注释。
结束
现在,你已准备好使用经过GPG身份验证的SSH会话访问世界上的每个服务器。你可以管理多个密钥,并在需要时识别它们。你已将安全备份需求减少到单个密钥文件,可以使用该文件来解锁或解密其他所有文件。
原文链接:
https://opensource.com/article/19/4/gpg-subkeys-ssh-manage
猜你喜欢
- 2024-10-10 Nutch-Hadoop-MongoDB搭建分布式爬虫
- 2024-10-10 OpenSSH更新至8.0,修复存在35年的安全漏洞
- 2024-10-10 [python] 基于paramiko库操作远程服务器
- 2024-10-10 利用Zabbix监控系统SSH方式检测远程目标主机
- 2024-10-10 手工方式IPSec VPN配置保障单位与分支之间的数据安全
- 2024-10-10 SSH 简介:安全远程访问的利器(安全远程登录协议ssh)
- 2024-10-10 [ Laravel 5.6 文档 ] 快速入门 —— 重量级开发环境:Homestead
- 2024-10-10 快速上手:Docker环境下的WordPress安装全攻略
- 2024-10-10 阿里云服务器Centos7.3安装Git(阿里云服务器centos装桌面)
- 2024-10-10 如何使用ssh密钥登录远程服务器(如何使用ssh密钥登录远程服务器账号)
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 356℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)