OpenSSH: как завершить блок матча

49

Я использую Matchблок в OpenSSH /etc/ssh/sshd_config(в Debian), чтобы ограничить некоторых пользователей SFTP:

# my stuff
Match group sftponly
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp -u 0002
    ChrootDirectory %h

Как вы можете видеть, я использую #my stuffкомментарий в пользовательских файлах конфигурации, чтобы легко отличить конфигурации по умолчанию от тех, которые я сделал (и я помещаю их в конец файлов конфигурации).
Теперь я хотел добавить директиву UseDNS noк конфигурации (чтобы ускорить вход в систему), но OpenSSH сказал Directive 'UseDNS' is not allowed within a Match block.

Теперь мне было интересно, есть ли такой синтаксис, как End Matchконец этих блоков совпадений?

mreithub
источник

Ответы:

30

Чтобы завершить сопоставление блока с openssh 6.5p1 или выше, используйте строку: Match all

Вот кусок кода, взятый из моего /etc/ssh/sshd_configфайла:

# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no

Match host 192.168.1.12
    PasswordAuthentication yes
Match all

X11Forwarding yes
X11DisplayOffset 10

Линия с подошвой Matchне сработает. (У меня это не сработало, sshd отказался запускаться)

loxaxs
источник
2
Круто, я только что попробовал это, и это, кажется, работает как ожидалось (я мог даже использовать UseDNSдирективу (которая не работала прежде). Принимая это как новый ответ. - Более новые версии OpenSSH очевидно даже не будут даже начать с пустого Match: lists.mindrot.org/pipermail/openssh-unix-dev/2014-April/…
mreithub
42

Кажется, нет никакого способа явно завершить сопоставление блоков. Со страницы руководства sshd_config :

Если все критерии в строке соответствия удовлетворены, ключевые слова в следующих строках переопределяют те, которые установлены в глобальном разделе файла конфигурации, до другой строки соответствия или конца файла.

Таким образом, Matchблоки должны быть в конце sshd_configфайла.

mreithub
источник
7
Другой вариант - иметь строку, на которой нет ничего, кроме Matchнее, которая эффективно соответствует всему и, следовательно, совпадает с «окончанием» блока. Это по-прежнему не позволит вам использовать директивы, которые не разрешены в блоках Match, поэтому не поможет в вашем конкретном сценарии.
Натан Бускал
4
Msgstr "Блоки совпадений должны быть в конце файла sshd_config." Очень полезно для меня и недостаточно четко объяснено (для меня) на странице руководства и т. Д. Спасибо.
MountainX
0

Я думаю, что мы должны упомянуть Matchи Hostключ одновременно.

Host

Ограничение следующих объявлений (до следующего Hostили Matchключевого слова) должно быть только для тех хостов, которые соответствуют одному из шаблонов, заданных после ключевого слова.

Match

Ограничивает использование следующих объявлений (до следующего Hostили Matchключевого слова), только когда выполняются условия, следующие за ключевым словом Match.

Читая руководство man ssh_config, оба Host *и Match allсбросят прежний блок ограничения, независимо от того, Matchблок это или Hostблок.

Simba
источник