我的情况如下:我有一个 GitHub 帐户。它一直是我的个人帐户,使用我的个人电子邮件。最近我的公司改用了 GitHub,我决定使用同一个帐户(这是允许的,我仔细检查了一下)。我使用工作电子邮件添加了公司的组织。因此,当我在工作机器上配置 git 时,我使用工作电子邮件来生成 ssh 密钥。我也在全局配置中使用工作电子邮件,效果很好。
现在我想知道,如果我想从我的工作机器将一些更改推送到我的个人存储库,我不希望我的工作电子邮件与该提交相关联。这很容易通过在本地设置 user.email 来实现。但是身份验证怎么办?这是我的问题:
如果我有一个帐户,其中有个人电子邮件和组织中的工作电子邮件,如果 config.email 设置正确,我如何验证自己的身份(如果 ssh 密钥是为工作或个人电子邮件生成的)是否重要?
或者换句话说,它会在某处说“此提交是在通过包含工作电子邮件的 ssh-key 进行身份验证后推送的”?
答案1
我使用工作电子邮件生成 ssh-key
SSH 密钥没有电子邮件地址字段。
他们有个评论字段,通常包含生成密钥的系统的“用户@主机”,但这既不是电子邮件地址,也不是 SSH(更不用说 Git)关注的东西——它只是密钥的标签。
或者换句话说,它会在某处说“这个提交是在通过这个 ssh-key 验证后推送的
不,GitHub 不会这样做。无论如何推送,提交看起来都一样(或WHO甚至推搡他们)。
(即使 Git 托管系统决定这样做,它也必须保留为仅在托管系统上可见的“外部”标签,因为在提交之后无法向提交中添加字段。)
如果你询问是因为你注意到了 GitHub 弹出的“已验证”窗口做与某些提交一起显示 - 这是完全不同的东西;它是在提交时附加的数字签名,而不是在推送时附加的数字签名。(请参阅选项git commit -S
。)
最初这些签名是使用 PGP(GPG)密钥或很少使用 S/MIME 制作的,但为了混淆 Git做过最近获得了使用 SSH 密钥进行提交签名的能力。但是,这与 SSH 推送身份验证完全不同;它是将 SSH 密钥重新用于非 SSH 目的。(我相信 GitHub 有一个完全独立的签名可信密钥列表。)
(至于签名,我会个人建议使用单独的工作密钥,无论它是 PGP 密钥还是 SSH 格式的密钥。)