根据sshd_config 命令,我可以指定支持的密码列表,例如:
Ciphers arcfour, 3des-cbc
问题在于,在一台主机上运行的客户端应用程序不支持与网络其余部分相同的密码
因此,有没有办法指定在所有情况下使用的密码,但有一个主机例外?
答案1
指令中列出的密码Ciphers
应按第一个匹配项进行,因此请将恶意客户端的密码放在列表的最后。如果可以,网络中的其他客户端将首先协商列表中排名较高的密码,而您的恶意客户端应采用较弱的密码。
不幸的是,如果明确设置,这仍然会允许其他客户端使用较弱的密码。遗憾的是,您不能将Ciphers
指令放在块内Match
。我能想到的另一个选项是为奇数客户端在不同的端口上运行不同的服务器,并将对 sshd 的第二个实例的访问限制在该主机上。
答案2
据我所知,唯一的选择是使用 ForceCommand 编写脚本。
使用 Match 应该不会太复杂:
ForceCommand
Forces the execution of the command specified by ForceCommand, ignoring any command supplied by the client and ~/.ssh/rc if present. The command is invoked by using the user's login shell with the -c option. This applies to shell, command, or subsystem execution. It is most useful inside a Match block.
以上内容来自手册页。我在这里找到了更多内容:SSHD 守卫脚本
- 编辑 -
我能做的最好的就是在另一个端口上运行一个单独的 SSHD 实例,然后在其中一个重定向示例中添加 -s,以仅捕获应用程序的 IP,并将其重定向到配置了正确密码的另一个实例:http://www.cyberciti.biz/faq/linux-port-redirection-with-iptables/