这有意义吗?
或者使用一个SSH密钥来实现两个目的是安全的吗?
这有点取决于你的目标是什么。
从技术上讲,你可以使用同一把密钥。SSH身份验证和SSH数据签名都是数字签名的应用程序,OpenSSH使用域分离的方式进行签名,避免了混淆。
在某些情况下,您可能需要一个长期的签名密钥,计划比典型的身份验证密钥使用更长时间(我通常会在获得新笔记本电脑时轮换身份验证密钥)。在这种情况下,将它们分开是有意义的。另一种情况是,如果您的签名密钥位于YubiKey或类似的安全密钥上,而身份验证密钥不在,则将它们分开可能是有意义的。
还要注意,您需要特别小心保护用于签名的任何密钥,因为身份验证签名会很快过期(随着您的SSH连接),而Git提交可能需要在几年后进行验证。但是,假设您这样做了,没有理由不能同时使用相同的密钥。
SSH签名是最简单的生成方式。
您甚至可以上传现有的身份验证密钥到GitHub,同时用作签名密钥。
也就是说,您可以使用一个密钥来完成两个任务。
生成GPG签名密钥比生成SSH密钥更复杂,但GPG具有SSH没有的功能。
GPG密钥可以在不再使用时过期或被撤销。
除非该密钥被标记为已受损,否则GitHub会显示使用此类密钥签名的提交为“已验证”。SSH密钥没有这种能力。
这就是为什么我总是喜欢每个任务使用一个SSH密钥。如果一个密钥出了问题,我至少知道它被用于什么。