我该如何发送我的SSH公钥给别人?

52

我需要将我的SSH公钥发送给我的客户,但我不太确定如何操作。我已经在我的电脑上创建了一个SSH密钥对,但现在卡住了。


1
通常情况下,您会通过被认为是安全的渠道发送一个重要的公钥。例如,您可以亲自使用一个USB存储设备交付它,并检查校验和是否仍然正确,以确保没有人篡改了USB存储设备。 - Willem Van Onsem
4个回答

32
如果您生成了密钥对,那么应该会有两个文件id_rsaid_rsa.pub(请注意,如果指定了其他名称,则id_rsa可能会被替换)。
公钥(即*.pub文件)是打算共享的密钥,因此这就是您应该发送给客户的密钥。
然而,请注意,即使这个文件是公开的,重要的是您的客户接收到您生成的那个文件。 如果有人篡改了这个文件,他们可以冒充您的服务器,带来安全问题。 因此,由您决定使用安全媒介与客户共享此文件:这可以是从手到手交付的物理USB密钥,安全的消息传递服务或任何其他与客户建立的安全通信渠道。

2
好的。那么只需要通过电子邮件或其他方式发送那个文件吗? - CJ Hill
3
因为它是一个公钥,所以不应该被加密,它只允许验证您的私钥(不应该被公开分享),所以您可以通过电子邮件发送它。 - statox
12
使用电子邮件发送的问题在于容易受到“中间人攻击”的威胁。比如说,“特鲁迪”想要干扰“Alice”与“Bob”的通信。她截获了包含公钥的电子邮件,并用自己的密钥替换了其中的公钥,同时还保存了自己的密钥。现在她用自己的密钥给Bob发送了一封邮件。这样,每当Alice给Bob发送一封电子邮件时,“特鲁迪”都可以修改邮件内容,并用自己的密钥重新签名,以使Bob认为这个密钥是Alice的。 - Willem Van Onsem
2
@statox:问题在于如何传递加密密钥。为了安全地进行通信,您可以将其存储在经过认证的https Web服务器上,以使通信至少被认为是相当安全的,或者您可以亲自交付密钥。例如,在使用Zimmermann-Sassamann协议的密钥签名派对上。 - Willem Van Onsem
1
@PrasanthGanesan 是的,你可能漏掉了什么,但是这个答案的评论不是问新问题的正确地方。你应该提出自己的问题,但我很确定这个问题在这个网站上已经被回答过了。 - statox
显示剩余13条评论

17
这可能已经太晚了,但如果你正在使用基于Unix系统的计算机,这将比发送隐藏文件更容易。
只需执行以下操作:
pbcopy < ~/.ssh/id_rsa.pub

这将会把您的公钥复制到剪贴板上。简而言之,只需粘贴到您想发送密钥的任何地方即可。


7
“pbcopy”是一种仅限于Mac使用的工具,而且这个问题没有明确提到使用Mac电脑。 - certainlyakey
可以使用wl-clipboard软件包:cat ~/.ssh/id_rsa.pub | wl-copy - Hamburg is nice

5

这是一个公钥,理论上,您使用的通道不必加密。

然而,它必须是一种防止潜在攻击者篡改密钥/消息的通道。在最坏的情况下,攻击者可能会用自己的公钥替换您的公钥,从而潜在地获得访问权限。

因此,在实践中,最好还是使用加密通道。至少确保您的电子邮件客户端使用加密连接到邮件服务器; 并希望您的邮件服务器也使用加密连接进一步分发电子邮件。


为了最小化成功的中间人攻击篡改的机会,我建议简单地通过电子邮件发送公钥,在接收后在两端计算其sha256哈希值,然后通过电话或类似方式验证哈希的某些部分。 - ack

4

默认情况下,您在Unix/Linux/OS X上的SSH公钥位于.ssh/文件夹中的id_rsa.pub文件中。因此,您可以发送该文件而不会有任何问题,因为您的私钥在id_rsa中,所以您的凭据不会被公开。

因此,基本上要么发送~/.ssh/id_rsa.pub文件,要么在终端中执行以下操作:

ssh-add -L

复制并粘贴打印出来的行,这样您就可以将其粘贴到电子邮件中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接