如何向某人发送我的 SSH 公钥? [关闭]

Posted

技术标签:

【中文标题】如何向某人发送我的 SSH 公钥? [关闭]【英文标题】:How do I send someone my SSH public key? [closed] 【发布时间】:2015-06-17 12:04:10 【问题描述】:

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

【问题讨论】:

通常,您会通过您认为安全的渠道发送重要公钥。例如,您使用 usb 棒 亲自给它并检查校验和是否仍然正确,这样也没有人篡改 usb 棒。 【参考方案1】:

如果您生成了一个密钥对,您应该有两个文件 id_rsaid_rsa.pub(请注意,如果您指定了 id_rsa,它可能会被替换为其他名称)。

公钥(即*.pub 文件)是要共享的,因此您应该将其发送给客户。

但是请注意,尽管此文件是公开的,但您的客户收到您生成的文件也很重要。如果有人要修改文件,他们可能会冒充您的服务器,这意味着存在安全问题。因此,由您决定共享此文件的安全介质:这可能是手到手的物理 USB 密钥、安全消息服务或您与客户之间的任何其他安全通信渠道。

【讨论】:

好的。所以只需通过电子邮件或其他方式发送该文件? 因为它是一个公钥,它不应该被加密,它只允许验证你的私钥(永远不应该公开共享)所以是的,你可以通过电子邮件发送它。 好的。最后一个问题。如果我想通过电子邮件发送,如何附加公钥文件,因为它在隐藏文件夹中? @statox:通过简单的电子邮件发送的问题是,中间人攻击并不安全。假设 Trudy 希望干扰 AliceBob 的通信。她捕获了包含公钥的电子邮件,并将其替换为自己的密钥,她还存储了自己的密钥。现在她用自己的密钥向 Bob 发送一封电子邮件。现在,对于 Alice 发送给 Bob 的每封电子邮件,她都可以修改内容,并使用自己的密钥将其退出,这样 Bob 就会认为这是 Alice 的密钥。 @statox:问题在于如何传递加密密钥。为了安全地进行,或者您将其存储在经过认证的 https 网络服务器上,以便至少认为通信是相当安全的,或者您亲自或亲自提供密钥。例如使用 Zimmermann-Sassamann 协议的keysigning party【参考方案2】:

这已经晚了,但如果您使用的是基于 unix 的系统,那么发送隐藏文件可能会更容易。

只要做:

pbcopy < ~/.ssh/id_rsa.pub

这会将您的公钥复制到剪贴板。因此,基本上只需在要粘贴密钥以发送密钥的任何位置粘贴即可。

【讨论】:

pbcopy 是仅适用于 Mac 的工具,该问题没有具体提及正在使用的 Mac。 可以使用 wl-clipboard 包:cat ~/.ssh/id_rsa.pub | wl-copy【参考方案3】:

默认情况下,您在 Unix/Linux/OS X 上的 SSH 公钥位于您的 HOME 目录中的 .ssh/ 文件夹中的 id_rsa.pub 文件中。因此,您可以毫无问题地发送该文件,因为您的私钥在 id_rsa 中,因此您的凭据不会暴露。

所以基本上要么发送~/.ssh/id_rsa.pub文件,要么在终端执行:

ssh-add -L

命令并复制打印的行,以便您可以粘贴到您的电子邮件中。

【讨论】:

【参考方案4】:

它是一个公钥,所以理论上你使用的频道不必加密。

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

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

【讨论】:

为了尽量减少成功篡改 MITM 的机会,我建议简单地通过电子邮件发送公钥,在收到后计算其两端的 sha256 哈希值,然后通过电话验证部分哈希值或类似。

以上是关于如何向某人发送我的 SSH 公钥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何从 gitbash 生成多个 SSH 公钥并在 Windows 机器上配置这些公钥? [关闭]

使用python脚本批量向多个主机发送ssh公钥

AWS ssh 访问“权限被拒绝(公钥)”问题[关闭]

我的邮件发件人不会向某人发送电子邮件

如何导入 SSH 私钥? [关闭]

GCP“管理元数据中的 SSH 密钥”如何在幕后工作 [关闭]