перевірте конфігурацію sshd


19

Як я можу перевірити конфігурацію sshd?

Наприклад, я хочу переконатися, що ці параметри встановлені та застосовані:

AllowUsers user1 user2 
PasswordAuthentication no
PermitRootLogin no

Це єдиний спосіб вручну перевірити вміст файлу sshd_config, або я можу перевірити sshdце?


2
Що ви маєте на увазі під підтвердженням? Ви запитуєте, як бути впевненим, що зроблена вами зміна конфігурації є дійсною? Ви запитуєте, чи є якийсь інструмент на кшталт lint, який перевірить правильність конфігурації?
Зоредаче

2
Я не думаю, що питання є незрозумілим: просто немає можливості перевірити, яке значення має параметр config. Якщо ви бачите #UseLogin noу вашому файлі ssd_config, це означає, що UseLogin - так, або UseLogin - ні? Ви повинні звернутися до посібника, щоб знайти значення за замовчуванням, яке можна було змінити під час компіляції. Поки що від марного питання ...
Xorax

Відповіді:


27

Існує розширений тестовий режим, який викликається параметром командного рядка -T, який робить це. Наприклад:

% sudo sshd -T | egrep -i 'allowusers|passwordauth|permitroot'
permitrootlogin yes
passwordauthentication yes

Цей варіант існує в Portable OpenSSH з 2008 року, пор. фіксувати e7140f2 . Це було випущено разом із 5.1p1, зробленим у липні 2008 року, пор. нотатки до випуску для 5.1 , тому вона існує майже у всіх установках OpenSSH сервера, що підтримуються сьогодні.


3
Зауважте, що це покаже параметри за замовчуванням + налаштування з /etc/ssh/sshd_configфайлу. Налаштування з файлу, можливо, ще не активні, поки ви sshdне завантажили їх чимось подібним /etc/init.d/ssh reloadабо еквівалентом у вашій системі.
mivk

2
@mivk хороший момент, але це в значній мірі збігається з курсом, тому що типово, що ми використовуємо такі команди саме після внесення змін, але перш ніж їх реально застосувати, тому що ми хочемо перевірити, що буде. Наприклад, apache2ctl -Sповодиться так само.
Йосип Родін

4

Хоча це не буде скидати все ваші визначення сервера, ви можете спробувати підключитися до сервера з прапором багатослівній налагодження: ssh -v user@server. Це дасть вам багато інформації, яка відображатиме параметри, включені в конфігурації sshd.

Наприклад, погляньте на вихід цього з'єднання за допомогою перемикача -v (підписи ключів, домен та IP-адреси, спеціально замасковані):

OpenSSH_6.0p1, OpenSSL 0.9.8w 23 Apr 2012
debug1: Reading configuration data /home/claudio/.ssh/config
debug1: /home/claudio/.ssh/config line 13: Applying options for serv01
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to somedomain.com [185.113.29.221] port 22.
debug1: Connection established.
debug1: identity file /home/claudio/.ssh/id_dsa type 2
debug1: identity file /home/claudio/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9
debug1: match: OpenSSH_5.9 pat OpenSSH_5*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 3a:0d:b8:18:ca:67:4c:54:0f:c8:b2:1e:48:53:69:28
debug1: Host '[somedomain.com]:22' is known and matches the ECDSA host key.
debug1: Found key in /home/claudio/.ssh/known_hosts:7
Warning: Permanently added the ECDSA host key for IP address '[185.113.29.221]:22' to the list of known hosts.
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /home/claudio/.ssh/id_dsa
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: Authentication succeeded (publickey).
Authenticated to somedomain.com ([185.113.29.221]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.

З цього ви бачите дозволені методи аутентифікації: publickey, пароль, інтерактивна клавіатура. Ви також можете бачити, що роумінг не заборонено цим сервером, і що користувач claudio міг з'єднатися за допомогою свого відкритого ключа.

Ви можете збільшити рівень виведення інформації, вказавши більше букв "v", але тоді ви можете отримати набагато більш низьку інформацію, ніж ви, мабуть, хочете.


3

Конфігурація Sshd є , як правило , знаходиться в наступному файлі: /etc/ssh/sshd_config.

Для запиту конфігурації часу виконання можна скористатися розширеним тестовим режимом, sshd -Tякий також дозволяє перевірити відповідність налаштувань клієнта.


1
Я не думаю, що це відповідає на питання, яке він задає, але його питання не зовсім зрозуміло.
Зоредаче

1
Схоже, він запитує, як перевірити конфігурацію. Наскільки мені відомо, немає можливості запитувати конфігурацію sshd під час виконання. Таким чином, конфігурацію можна знайти лише у згаданому мені файлі.
gparent

Як ви сказали, питання не має сенсу, тому я зрозумів, що, можливо, ОП не знає, де файл чи його точну назву.
gparent

Якщо ви збираєтесь оскаржити мене без поважних причин через 4 роки, використовуйте здоровий глузд і перевірте історію питань, а потім запропонуйте змінити.
геп

@gparent, початкове запитання було дещо розпливчастим і мало помилку в конфігураційному файлі, тож вам слід було скористатися функцією редагування, щоб замість цього виправити цей рядок у питанні; і в будь-якому випадку відповідь на питання про верифікацію тепер показана вище
Йосип Родін

2

немає відомого способу запиту конфігурації запущеного екземпляра sshd, я думаю, якщо ви посилаєтесь на opensh-сервер. залежно від того, що ви хочете зробити, ви можете використовувати прапор -t для тестування файла конфігурації, щоб переконатися, що він дійсний перед перезавантаженням сервера, щоб вас не вигнали, esp. якщо у вас немає жодного позадіапазонного доступу до сервера.


2

Проблема з переглядом файла / etc / ssh / sshd_config, як пропонують інші відповіді, полягає в тому, що він не обов'язково містить всю конфігурацію. Цей файл містить значення будь-яких змінних конфігурації, які ви хочете встановити для перевиконання значень за замовчуванням, а як відправлений містить у якості коментарів типові параметри, вбудовані в sshd.

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

Крім того, цілком можливо запустити sshd з альтернативним конфігураційним файлом з опцією -f, тому той, що зберігається в / etc / ssh / sshd_config, може не відображати поточні налаштування.

Це робить це питання цілком справедливим, і, наскільки я знаю, на нього неможливо відповісти з певністю.


Все це правда, але це не стосується 99% серверів, на яких запускається sshd, встановлений із пакета, у якому зібрана конфігурація за замовчуванням.
Ендрю Шульман

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