Протокол SSH или Secure Shell используется для удаленного входа в систему и выполнения команд на удаленной машине. Данные, которые передаются по протоколу SSH, шифруются специальными алгоритмами, что делает SSH более безопасным, чем Telnet. По сути, OpenSSH — это инструмент, который реализует этот протокол.
В этой статье мы рассмотрим различные аспекты файла конфигурации сервера OpenSSH. Давайте начнем сейчас.
Есть несколько основных файлов как для клиента OpenSSH, так и для сервера. Он имеет два типа файлов конфигурации:
1. Файлы, относящиеся к клиентской части: Один из файлов — ssh_config. Это общесистемный файл конфигурации. Этот файл находится в /etc/ssh/ssh_config.
Другой файл — это config, который представляет собой пользовательский файл конфигурации, расположенный в $HOME/.ssh/config.
Программа SSH на хосте берет конфигурацию либо из этих файлов, либо через интерфейс командной строки. В случае с ранее упомянутыми файлами общесистемный файл конфигурации, который называется ssh_config, имеет приоритет над пользовательским файлом «config».
2. sshd_config: относится к серверной части. Сервер OpenSSH читает этот файл при запуске.
Конфигурационный файл sshd содержит множество директив, которые также можно настроить. Давайте посмотрим на макет этого файла по умолчанию:
$ cat /etc/ssh/sshd_config
# Это общесистемный файл конфигурации сервера sshd. Смотреть
# sshd_config(5) для получения дополнительной информации.
Port 222 ListenAddress 0.0.0.0 ListenAddress :: HostKey /etc/ssh/ssh_host_key ServerKeyBits 768 LoginGraceTime 600 KeyRegenerationInterval 3600 PermitRootLogin yes IgnoreRhosts yes StrictModes yes X11Forwarding no AllowTcpForwarding no PermitTTY no X11DisplayOffset 10 PrintMotd yes KeepAlive yes SyslogFacility AUTH LogLevel INFO RhostsAuthentication no RhostsRSAAuthentication no RSAAuthentication yes PasswordAuthentication yes PermitEmptyPasswords no CheckMail no
Любая строка, начинающаяся с «#», воспринимается как комментарий. Давайте рассмотрим некоторые из заданных параметров:
1. Директива Port указывает номер порта. Это номер порта, на котором sshd прослушивает соединения. Значение по умолчанию для этого порта — 22, что является стандартным. Однако в нашем случае мы изменили его на 222.
Кроме того, мы можем указать более одной директивы Port. Таким образом, мы можем использовать несколько портов для прослушивания соединений sshd.
2. ListenAddress содержит IP-адрес для прослушивания. Действие по умолчанию — прослушивание всех IP-адресов, привязанных к серверу. Также обратите внимание, что директива Port должна следовать за директивой ListenAddress.
3. Полный путь к файлу частного ключа хоста RSA задается директивой HostKey. В предыдущем случае это был путь /etc/ssh/ssh_host_key.
4. Директива PermitRootLogin разрешает вход root для sshd, если для нее установлено значение yes. Для этого следует установить значение no, если только файлы hosts.allow и hosts.deny не используются для ограничения доступа к sshd.
5. Директива X11Forwarding разрешает переадресацию системы X Window, если установлено значение yes.
6. Какое средство системного журнала, которое должен использовать sshd , указывается с помощью директивы SyslogFacility. Оставьте значение по умолчанию как есть.
7. Уровень ведения журнала для системного журнала указывается с помощью директивы LogLevel.
По умолчанию демон сервера sshd или OpenSSH использует порт 22 протокола TCP. Рекомендуется изменить этот номер порта на другое значение в тестовой среде. Это гарантирует нам постоянную доступность подключения к серверу.
Кроме того, рекомендуется проверять синтаксис конфигурации нового файла sshd_config перед его использованием, независимо от того, на каком порту он работает. Чтобы проверить синтаксис, мы можем использовать следующую команду:
$ sshd -t
Также важно отметить, что только пользователь root должен иметь возможность читать и писать в этот файл. Это означает, что если файл конфигурации sshd_config надежно защищен, выполнение предыдущей команды требует полномочий root.
Если при выполнении предыдущей команды проверки синтаксиса вывод не появляется, это означает, что с файлом все в порядке.
В некоторых случаях мы хотим запустить новый экземпляр sshd на другом порту. Это может быть связано с тем, что порт 22 уже используется, или могут быть некоторые области риска при изменении этого порта в производственной среде. В подобных ситуациях мы можем создать альтернативный файл конфигурации для нашего сервера.
Давайте создадим новый файл sshd_config как sshd_config_new. Этот файл может использоваться для некоторых других параметров сервера. Теперь давайте укажем, что этот файл будет считаться новым файлом конфигурации сервера на порту номер 100:
$ sudo /usr/sbin/sshd -f /etc/ssh/sshd_config_new -p 100
Демон sshd теперь прослушивает порт 100. Мы можем использовать любое значение порта, но не то, которое уже используется.
Теперь давайте проверим, работает ли наш новый порт должным образом. Для этого нам нужно использовать клиентскую программу ssh и выполнить следующую команду:
$ /usr/bin/ssh -p 100 <ip of the server>
Параметр «-p» указывает порт 100, который будет использоваться на удаленном сервере. Если мы тестируем локально, мы можем использовать IP-адрес сервера в качестве IP-адреса локального хоста:
$ /usr/bin/ssh -p 100 127.0.0.1
Иногда наш сервер не работает должным образом. В таких случаях мы можем использовать флаг «-d» для устранения неполадок в конфигурации сервера OpenSSH. Используя флаг «-d», сервер входит в режим отладки и обрабатывает только одно соединение.
Вывод, который создается в режиме отладки, является подробным. Мы можем использовать больше флагов «-d», чтобы повысить уровень отладки. Давайте запустим команду отладки на нашем сервере, используя новый файл конфигурации:
$ /usr/sbin/sshd -d -p 100 -f /etc/ssh/sshd_config_new
Выходные данные предыдущей команды регистрируются в stderr вместо использования средства AUTH syslogd.
Демон OpenSSH или sshd является важной частью многих инфраструктур администрирования. Таким образом, для оптимальной работы требуется опыт. В этой статье мы узнали о файле конфигурации сервера OpenSSH, таком как sshd_config.