以下条目/etc/ssh/sshd_config就像一个魅力:
Match User andreas
ForceCommand /bin/echo "You are Andreas"
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试用否定匹配替换它,它根本不会捕获用户andreas:
Match User !bob
ForceCommand /bin/echo "You are not Bob"
Run Code Online (Sandbox Code Playgroud)
没有错误消息或任何东西,它只是继续,就好像从未设置过配置选项一样。
根据手册页,否定模式应该有效:
的参数
Match是一个或多个标准模式对或匹配所有标准的单个标记 All 。可用条件包括User,Group,Host,LocalAddress,LocalPort,和Address。匹配模式可以由单个条目或逗号分隔的列表组成,并且可以使用 的PATTERNS部分中描述的通配符和否定运算符ssh_config(5)。
这是一种奇怪的行为,但您可以尝试:
Match User *,!bob
ForceCommand /bin/echo "You are not Bob"
Run Code Online (Sandbox Code Playgroud)
引用红帽:
要在 Match 条件块中使用否定,表达式前面需要有一个
*。例如,给出以下部分的底部sshd_config:RawRun Code Online (Sandbox Code Playgroud)Match Group *,!admin Address 192.168.1.1 ForceCommand /bin/false这将拒绝从192.168.1.1连接到不在admin组中的任何人。连接拒绝是使用
ForceCommand指示 sshd 服务器运行虚拟命令 (/bin/false) 并立即退出的语句来实现的。根本原因
这种非直观行为的原因取决于 OpenSSH 中否定的实现。
不幸的是,负匹配被破坏了,希望在 openssh-7.0 中得到修复:
查看这些错误:
| 归档时间: |
|
| 查看次数: |
2137 次 |
| 最近记录: |