以下条目/etc/ssh/sshd_config
非常有效:
Match User andreas
ForceCommand /bin/echo "You are Andreas"
andreas
但是,如果我尝试用负匹配替换它,它根本无法吸引用户:
Match User !bob
ForceCommand /bin/echo "You are not Bob"
没有任何错误消息或任何内容,它只是继续运行,就好像配置选项从未设置过一样。
根据手册页,负面模式应该起作用:
的参数
Match
是一个或多个条件模式对,或匹配所有条件的单个标记 All。可用的条件是User
、Group
、Host
、LocalAddress
、LocalPort
和Address
。匹配模式可以由单个条目或逗号分隔的列表组成,并且可以使用图案的部分ssh_config(5)
。
答案1
我发现此相关帖子关于服务器故障。
这是一种奇怪的行为,但你可以尝试:
Match User *,!bob
ForceCommand /bin/echo "You are not Bob"
引用红帽:
要在 Match 条件块中使用否定,表达式前面需要有一个
*
。例如,给出底部的以下部分sshd_config
:RawMatch Group *,!admin Address 192.168.1.1 ForceCommand /bin/false
这将拒绝来自192.168.1.1对于任何不在行政组。使用语句来拒绝连接,
ForceCommand
该语句指示 sshd 服务器运行虚拟命令 (/bin/false
) 并立即退出。根本原因
这种非直观行为的原因取决于 OpenSSH 中否定的实现。
答案2
不幸的是,负面匹配被破坏了,希望在 openssh-7.0 中修复:
参见这些错误: