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

19

Как я могу проверить конфигурацию sshd?

Например, я хочу убедиться, что эти настройки установлены и применены:

AllowUsers user1 user2 
PasswordAuthentication no
PermitRootLogin no

Это единственный способ проверить содержимое файла вручную sshd_config, или я могу проверить это sshd?

Хуан Пабло
источник
2
Что вы подразумеваете под проверкой? Вы спрашиваете, как убедиться, что внесенные вами изменения в конфигурацию действительны? Вы спрашиваете, есть ли какой-нибудь инструмент, такой как lint , который проверит правильность конфигурации?
Зоредаче
2
Я не думаю, что вопрос неясен: просто нет способа проверить, какое значение имеет опция конфигурации. Если вы видите #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», но тогда вы можете получить гораздо больше информации низкого уровня, чем вы, вероятно, хотите.

Claudio
источник
3

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

Чтобы запросить конфигурацию времени выполнения, вы можете использовать расширенный режим тестирования, sshd -Tкоторый также позволяет вам проверять соответствие параметров клиента.

gparent
источник
1
Я не думаю, что это отвечает на вопрос, который он задает, но его вопрос не совсем ясен.
Zoredache
1
Похоже, он спрашивает, как проверить конфигурацию. Насколько я знаю, нет способа запросить конфигурацию sshd во время выполнения. Таким образом, конфигурацию можно найти только в упомянутом мной файле.
gparent
Как вы сказали, вопрос не имеет смысла, поэтому я подумал, что, возможно, ОП не знает, где находится файл или его точное имя.
gparent
Если через 4 года вы намерены опровергнуть меня без всякой уважительной причины, используйте здравый смысл и проверьте историю вопроса, а затем предложите изменить.
gparent
@gparent исходный вопрос был несколько расплывчатым и содержал опечатку в пути к файлу конфигурации, поэтому вы должны использовать вместо этого функцию редактирования, чтобы исправить эту строку в вопросе; и так или иначе, ответ на контрольный вопрос теперь показан выше
Йосип Роден
2

Я думаю, что нет никакого известного способа запроса конфигурации работающего экземпляра sshd, если вы ссылаетесь на сервер openssh. в зависимости от того, что вы хотите сделать, вы можете использовать флаг -t, чтобы протестировать файл конфигурации, чтобы убедиться, что он действителен перед перезапуском сервера, чтобы вас не выгнали, esp. если у вас нет внешнего доступа к серверу.

johnshen64
источник
2

Проблема с просмотром файла / etc / ssh / sshd_config в соответствии с другими ответами заключается в том, что он не обязательно содержит всю конфигурацию. Этот файл содержит значения любых переменных конфигурации, которые вы хотите установить для переопределения значений по умолчанию, а в виде поставки содержит в качестве комментариев значения по умолчанию, встроенные в sshd.

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

Кроме того, вполне возможно запустить sshd с альтернативным файлом конфигурации с параметром -f, поэтому файл, сохраненный в / etc / ssh / sshd_config, может не отражать текущие настройки.

Это делает вопрос вполне обоснованным и, насколько мне известно, на него нельзя ответить с уверенностью.

Питер Гатерколь
источник
Все это правда, но это не относится к 99% серверов, на которых будет запускаться sshd из пакета, в котором скомпилирована конфигурация по умолчанию.
Эндрю Шульман
Ваш ответ полезен, но на вопрос действительно можно ответить с уверенностью, уже довольно давно, пожалуйста, смотрите мой ответ ниже.
Иосип Роден