2

Следующая запись в /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 . Эти образцы соответствия могут состоять из отдельных записей или разделенная запятой списков и могут использовать подстановочные и отрицание операторов , описанные в PATTERNS разделе ssh_config(5)

2 ответа2

2

к сожалению, отрицательные совпадения нарушены и будут исправлены в openssh-7.0:

Смотрите эти ошибки:

2

Я нашел этот пост по вине сервера.

Это странное поведение, но вы можете попробовать:

Match User *,!bob
    ForceCommand /bin/echo "You are not Bob"

Цитирую RedHat:

Чтобы использовать отрицание в условных блоках Match, перед выражением должен стоять знак * . Например, в следующем разделе внизу sshd_config: Raw

Match Group *,!admin Address 192.168.1.1
    ForceCommand /bin/false

Это запретило бы соединения с 192.168.1.1 любому, кто не входит в группу администраторов . Отказ в соединении достигается с помощью оператора ForceCommand который дает команду серверу sshd выполнить фиктивную команду (/bin/false) и немедленно завершить работу .

Первопричина

Причина этого неинтуитивного поведения зависит от реализации отрицания в OpenSSH.

Ссылка https://bugzilla.mindrot.org/show_bug.cgi?id=1315

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .