ben*_*enf 8 security ssh openssh
我试图了解 OpenSSH 如何决定使用哪种密钥交换方法。我没有看到的是如何指定方法。此外,我知道每个 ssh 服务器/客户端至少需要支持两种方法:diffie-helleman-group1-sha1
and diffie-helleman-group14-sha1
,但我不清楚服务器和客户端如何在两者之间进行选择,因为每个程序都必须同时支持这两种方法。我认为在每种情况下diffie-helleman-group14-sha1
都会使用它,因为它具有更大的 MODP 组。
我可以指定密码和 MAC:
ssh <user@ip> -c aes256-cbc -m hmac-sha1
Run Code Online (Sandbox Code Playgroud)
但是查看联机帮助页我没有看到密钥交换的等效选项。有人可以 1) 告诉我一种指定方法 2) 解释 ssh 如何选择该方法吗?(我怀疑它总是选择列表中的第一个,这意味着永远不会选择第二个)
jjl*_*lin 11
OpenSSH 5.7引入了该KexAlgorithms
选项:
ssh(1)/sshd(8): add a KexAlgorithms knob to the client and server
configuration to allow selection of which key exchange methods are
used by ssh(1) and sshd(8) and their order of preference.
Run Code Online (Sandbox Code Playgroud)
所以如果你至少有那个版本,你应该能够通过-oKexAlgorithms=<kex_list>
指定你的偏好。
AFAICT,OpenSSH 客户端实际上不会打印出协商的 kex 算法,但是如果您通过-vv
并查看kex_parse_kexinit
行,您可以看到支持的 kex 算法列表(以及加密、MAC 等算法的列表)由客户端,然后是服务器支持的列表。理论上,客户端将选择其列表中也出现在服务器列表中的第一个算法(即,选择有利于客户端的偏好)。所以对于客户端列表a,b,c
和服务器列表c,b
,客户端选择算法b
。
归档时间: |
|
查看次数: |
37685 次 |
最近记录: |