如何指定 openssh 在生成密钥时应使用什么 MAC、密码和密钥交换?

如何指定 openssh 在生成密钥时应使用什么 MAC、密码和密钥交换?

我正在学习openssh,我发现openssh的基础有3个组成部分。

  1. 密码 - 加密数据
  2. 消息验证代码 (MAC) - 确保数据完整性,即数据在到达最终用户的过程中不会更改。
  3. 密钥交换 - 用于会话密钥交换。

问题:

  1. openssh中还有其他重要的配置部分吗?
  2. 在生成 openssh 密钥时,我如何知道它应该使用什么密码、MAC 和密钥交换?

答案1

openssh中还有其他重要的配置部分吗?

是的。 SSH 协议有第四个主要部分:验证

您手动生成的密钥(或等效密钥ssh-keygen)仅用于身份验证,对您列出的三个协议元素没有任何影响。虽然这三个元素在功能上是对称的,但每个方向的身份验证可能不同。

因此,在客户端上,您可以选择生成一个或多个密钥,每个密钥都使用特定的算法(也称为“类型”)-t(RSA、DSA - 以前的 ECDSA、Ed25519),同时配置或默认您将使用的算法从服务器接受。根据服务器的不同,客户端(仅!)可以使用其他身份验证方法,例如密码(经常)或 GSS(很少),而不是(任何)公钥算法。

相反,在服务器上,您为特定算法生成密钥,但实际上大多数服务器会自动生成全部键类型,并提供客户端请求的任何类型。您可以配置或默认客户端密钥可以使用的算法以及任何非公钥方法。

在生成 openssh 密钥时,我如何知道它应该使用什么密码、MAC 和密钥交换?

你不知道。您配置程序,不是这些元素的关键。在客户端、服务器或两者上,如中所述Q链接在评论中。尽管 Q 没有指出在客户端,在/etc/ssh/ssh_config或中~/.ssh/ssh_config,您可以为所有“主机”(服务器)配置全局设置,或者使用HostMatch语法为不同主机和/或用户 ID 配置不同设置。请参阅您系统上的手册页或在网上,并在此处搜索现有的 Q 或超级用户;我知道我见过好几个。

尽管应该指出,这不会提高安全性。 OpenSSH 开发人员非常谨慎——有些人可能会说过于谨慎——而且他们设置的默认值已经足够“强大”了。痴迷于在加密配置中使用正确的魔法词最多是浪费时间,并且有可能犯下以下错误:减少安全,或更常见的是分散您的注意力,使您无法处理实际需要做的事情重要的是,例如管理您的密钥和验证主机的真实性。

相关内容