要获取所有受支持的算法的列表,我可以运行ssh -Q kex
,它在我的计算机上输出
diffie-hellman-group1-sha1
diffie-hellman-group14-sha1
diffie-hellman-group14-sha256
diffie-hellman-group16-sha512
diffie-hellman-group18-sha512
diffie-hellman-group-exchange-sha1
diffie-hellman-group-exchange-sha256
ecdh-sha2-nistp256
ecdh-sha2-nistp384
ecdh-sha2-nistp521
curve25519-sha256
[email protected]
[email protected]
我还知道如果我想将某些算法列入白名单,我可以在 sshd_config 和 ssh_config 文件中添加一行。KexAlgorithms [email protected],diffie-hellman-group-exchange-sha256
但是,我认为我不会一直保持此列表的更新。如果我的 ssh 版本更新以包含更好的密码,我希望能够自动利用这些密码(如果我不修改配置文件,就会发生这种情况)。通过尝试消除我不想使用的算法(例如diffie-hellman-group1-sha1
),我也将自己限制在不使用任何比当前支持的最佳算法更好的算法。
有没有办法配置 ssh 和 sshd 来说“不考虑这些算法”而不说“并且除了这些其他算法之外不考虑任何东西”?
我会接受针对 openssh 和 Linux 的特定答案,并且您可以假设我正在使用相关软件的最新版本。
答案1
来自的手册页ssh_config
:
KexAlgorithms
指定可用的 KEX(密钥交换)算法。多个算法必须用逗号分隔。如果指定的列表以“+”字符开头,则指定的方法将附加到默认集合,而不是替换它们。如果指定的列表以“-”字符开头,则指定的方法(包括通配符)将从默认集合中删除,而不是替换它们。
使用“-”选项,将所有想要从客户端默认列表中列入黑名单的密码添加到其中。
不幸的是,手册页sshd_config
似乎没有记录服务器端的相同选项,但它确实有效。