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закінчувати ці блоки збігів?

Відповіді:


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 відмовився починати)


2
Класно, я тільки що спробував це, і, здається, він працює як очікувалося (я навіть міг би використовувати UseDNSдирективу (яка раніше не працювала). Приймаючи це як нову відповідь. - Новіші версії OpenSSH, мабуть, навіть не будуть почніть із порожнього Match: list.mindrot.org/pipermail/openssh-unix-dev/2014-April/…
mreithub

42

Здається, немає способу явно закінчити блоки Match. На сторінці керівництва sshd_config :

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

Тому Matchблоки повинні бути в кінці sshd_configфайлу.


7
Інший варіант - мати рядок, окрім Matchнеї, окрім неї, яка ефективно відповідає всім, а отже, є такою ж, як "закінчення" блоку. Це все ще не дозволить вам використовувати директиви, які не дозволені в блоках Match, однак це не допоможе вашому конкретному сценарію.
Натан Бускал

4
"Блоки відповідності повинні бути в кінці файлу sshd_config." Дуже корисно для мене і не пояснено досить чітко (для мене) на сторінці man і т.д. Дякую.
MountainX

0

Я думаю, що ми повинні одночасно згадати Matchі Hostключові.

Host

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

Match

Обмежує наведені нижче декларації (до наступного Hostабо Matchключового слова), які використовуються лише тоді, коли будуть виконані умови, що відповідають ключовому слову "Відповідність".

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.