我正在学习openssh,我发现openssh的基础有3个组成部分。
- 密码 - 加密数据
- 消息验证代码 (MAC) - 确保数据完整性,即数据在到达最终用户的过程中不会更改。
- 密钥交换 - 用于会话密钥交换。
问题:
- openssh中还有其他重要的配置部分吗?
- 在生成 openssh 密钥时,我如何知道它应该使用什么密码、MAC 和密钥交换?
答案1
openssh中还有其他重要的配置部分吗?
是的。 SSH 协议有第四个主要部分:验证。
您手动生成的密钥(或等效密钥ssh-keygen
)仅用于身份验证,对您列出的三个协议元素没有任何影响。虽然这三个元素在功能上是对称的,但每个方向的身份验证可能不同。
因此,在客户端上,您可以选择生成一个或多个密钥,每个密钥都使用特定的算法(也称为“类型”)-t
(RSA、DSA - 以前的 ECDSA、Ed25519),同时配置或默认您将使用的算法从服务器接受。根据服务器的不同,客户端(仅!)可以使用其他身份验证方法,例如密码(经常)或 GSS(很少),而不是(任何)公钥算法。
相反,在服务器上,您能为特定算法生成密钥,但实际上大多数服务器会自动生成全部键类型,并提供客户端请求的任何类型。您可以配置或默认客户端密钥可以使用的算法以及任何非公钥方法。
在生成 openssh 密钥时,我如何知道它应该使用什么密码、MAC 和密钥交换?
你不知道。您配置程序,不是这些元素的关键。在客户端、服务器或两者上,如中所述Q链接在评论中。尽管 Q 没有指出在客户端,在/etc/ssh/ssh_config
或中~/.ssh/ssh_config
,您可以为所有“主机”(服务器)配置全局设置,或者使用Host
或Match
语法为不同主机和/或用户 ID 配置不同设置。请参阅您系统上的手册页或在网上,并在此处搜索现有的 Q 或超级用户;我知道我见过好几个。
尽管应该指出,这不会提高安全性。 OpenSSH 开发人员非常谨慎——有些人可能会说过于谨慎——而且他们设置的默认值已经足够“强大”了。痴迷于在加密配置中使用正确的魔法词最多是浪费时间,并且有可能犯下以下错误:减少安全,或更常见的是分散您的注意力,使您无法处理实际需要做的事情做重要的是,例如管理您的密钥和验证主机的真实性。