如何设置Git SSH密钥

使用命令行使用Git时,最常见的身份验证方法是使用SSH密钥。了解如何设置它们。

使用命令行使用Git时,最常见的身份验证方法是使用SSH密钥。

大多数基于GUI的客户端(例如GitHub Desktop)将为您处理此问题,但是有时您需要命令行,因此适当设置SSH密钥非常有用。

另外,有时您需要SSH密钥才能执行有用的操作,例如在远程服务器上提取存储库。

电脑上的按键

SSH密钥存储在~/.ssh文件夹。

您可以在其中拥有多个密钥,因为SSH密钥用于Git以外的其他事物。

您可以通过键入列出所有SSH密钥

ls -al ~/.ssh

如果您有现有的密钥,您会注意到它们是成对放置的,一个文件和另一个名称相似的文件以.pub

Existing SSH keys

.pub文件包含公钥,而另一个文件包含私钥,永远不要在任何地方共享。

您永远不应在任何地方共享私钥。如果丢失了私钥,则必须重新生成一个新的私钥/公钥对,因为没有私钥部分就无法成功完成身份验证。

生成新密钥

您可以使用以下命令生成新的SSH密钥ssh-keygen,可在所有具有Linux子系统或Linux操作系统的macOS,Linux和现代Windows计算机上使用Windows版Git包裹。

这是您使用的命令:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

在此示例中,最后一个部分用电子邮件地址填充,它是注释。您可以输入所需的任何电子邮件,它不必是您的GitHub帐户,甚至可以是随机字符串。知道谁产生了密钥是否有歧义可能会很有用。

密钥生成程序将询问您要将密钥保存在何处。如果这是第一把钥匙,建议您使用id_rsa作为文件名,但最好选择一个文件名,以记住为其生成服务的名称,例如github_rsa

您可以选择添加密码。我强烈建议您设置密码。 macOS会将密码存储在钥匙串中,因此您不必每次都重复输入密码。

将密钥添加到GitHub

我展示了GitHub的流程,但它与每个Git平台使用的流程相同,但有很小的差异。

在GitHub设置中,您会找到“ SSH和GPG密钥”菜单:

单击它会显示您当前的设置:

如您在此处看到的,我定义了3个SSH密钥,一个在我的Mac本地使用,另一个在远程服务器上使用,以获取网站代码。

按“ New SSH key”(新SSH密钥)可以添加一个新的:

您将标题设置为有意义的东西,从现在起您将记得2年以上。

密钥是您之前生成的密钥。

您可以打开.pub密钥文件,复制其内容并将其粘贴在此框中。

您可以使用任何CLI命令(例如cat id_rsa.pub然后用鼠标复制/粘贴整个键代码。

一旦将该字符串保存到GitHub(或每个其他服务,因为每个人的概念都相同),您的Git客户端将具有与删除服务器进行通信所需的凭据,您应该一切顺利!

使用多个键

建议对要使用的每个服务使用不同的SSH密钥。

这使得很容易使特定服务上的密钥失效,而无需决定是否要更新它(因为受到破坏/公开暴露或出于其他原因)而在所有使用的服务上对其进行更改。