Руководства по командной строке

Man » sshd Manual online — подробная онлайн-документация для страницы руководства sshd

🌍
sshd — демон OpenSSH

КРАТКОЕ ОПИСАНИЕ

sshd    [-46DdeGiqTtV]    [-C   connection_spec]   [-c   host_certificate_file]   [-E   log_file]
[-f config_file] [-g login_grace_time] [-h host_key_file] [-o option] [-p port] [-u len]

ОПИСАНИЕ

sshd (демон OpenSSH) — это программа-демон для ssh(1). Она обеспечивает безопасную зашифрованную связь между двумя ненадежными хостами по небезопасной сети.

sshd  прослушивает подключения от клиентов. Обычно она запускается при загрузке системы из /etc/init.d/ssh.

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

sshd  может быть настроена с помощью параметров командной строки или файла конфигурации (по умолчанию
sshd_config(5)); параметры командной строки имеют приоритет над значениями, указанными в файле конфигурации.  sshd
перечитывает свой файл конфигурации при получении сигнала SIGHUP, перезапуская себя с теми же именем и параметрами, что и при запуске, например, /usr/sbin/sshd.

Параметры следующие:

-4      Принудительно использует только IPv4-адреса.

-6      Принудительно использует только IPv6-адреса.

-C connection_spec

Указывает параметры подключения, которые будут использоваться для расширенного тестового режима -T. Если указано, все директивы Match в файле конфигурации, которые применимы, применяются до записи конфигурации в стандартный вывод. Параметры подключения предоставляются в виде пар «ключ=значение» и могут быть предоставлены в любом порядке, либо с использованием нескольких параметров -C, либо в виде списка, разделенного запятыми. Ключи — это «addr», «user», «host», «laddr», «lport» и «rdomain», соответствующие исходному адресу, пользователю, разрешенному имени исходного хоста, локальному адресу, локальному номеру порта и домену маршрутизации соответственно. Кроме того, можно указать флаг «invalid-user» (который не принимает аргумент значения), чтобы смоделировать подключение с неизвестным именем пользователя.

-c host_certificate_file

Указывает путь к файлу сертификата для идентификации sshd во время обмена ключами. Файл сертификата должен соответствовать файлу ключа хоста, указанному с помощью параметра -h или директивы конфигурации HostKey.

-D      Если указан этот параметр, sshd не будет отсоединяться и не станет демоном. Это позволяет легко отслеживать sshd.

-d      Режим отладки. Сервер отправляет подробные отладочные сообщения в стандартный вывод ошибок и не запускается в фоновом режиме. Сервер также не будет выполнять fork(2) и будет обрабатывать только одно подключение. Этот параметр предназначен только для отладки сервера. Несколько параметров -d увеличивают уровень отладки. Максимальное значение — 3.

-E log_file
Добавляет отладочные сообщения в файл log_file вместо системного журнала.

-e
Записывает отладочные сообщения в стандартный поток ошибок вместо системного журнала.

-f config_file
Указывает имя файла конфигурации. По умолчанию используется /etc/ssh/sshd_config. sshd отказывается запускаться, если файл конфигурации отсутствует.

-G
Анализирует и выводит файл конфигурации. Проверяет корректность файла конфигурации, выводит эффективную конфигурацию в стандартный вывод и завершает работу. При необходимости правила Match могут быть применены путем указания параметров подключения с помощью одного или нескольких параметров -C.

-g login_grace_time
Указывает время ожидания для аутентификации клиентов (по умолчанию 120 секунд). Если клиент не сможет аутентифицировать пользователя в течение этого времени, сервер отключится и завершит работу. Значение, равное нулю, указывает на отсутствие ограничений.

-h host_key_file
Указывает файл, из которого считывается ключ хоста. Этот параметр необходимо указать, если sshd не запущен от имени пользователя root (поскольку обычные файлы ключей хоста обычно доступны только пользователю root). По умолчанию используются /etc/ssh/ssh_host_ecdsa_key, /etc/ssh/ssh_host_ed25519_key и /etc/ssh/ssh_host_rsa_key. Можно использовать несколько файлов ключей хоста для разных алгоритмов ключей хоста.

-i
Указывает, что sshd запускается из inetd(8).

-o option
Может использоваться для передачи параметров в формате, используемом в файле конфигурации. Это полезно для указания параметров, для которых нет отдельного параметра командной строки. Для получения полной информации о параметрах и их значениях обратитесь к sshd_config(5).

-p port
Указывает порт, на котором сервер прослушивает входящие соединения (по умолчанию 22). Можно указать несколько параметров port. Порты, указанные в файле конфигурации с помощью параметра Port, игнорируются при указании порта в командной строке. Порты, указанные с помощью параметра ListenAddress, имеют приоритет над портами, указанными в командной строке.

-q
Тихий режим. Ничего не отправляется в системный журнал. Обычно в системный журнал записываются начало, аутентификация и завершение каждого соединения.

-T
Расширенный тестовый режим. Проверяет корректность файла конфигурации, выводит эффективную конфигурацию в стандартный вывод и завершает работу. При необходимости правила Match могут быть применены путем указания параметров подключения с помощью одного или нескольких параметров -C. Этот режим аналогичен параметру -G, но также включает дополнительные тесты, выполняемые параметром -t.

-t
Тестовый режим. Только проверяет корректность файла конфигурации и целостность ключей. Это полезно для надежного обновления sshd, так как параметры конфигурации могут меняться.

-u len
Этот параметр используется для указания размера поля в структуре utmp, которое хранит имя удаленного хоста. Если разрешенное имя хоста длиннее len, вместо него будет использоваться десятичный точечный адрес. Это позволяет хостам с очень длинными именами хостов, которые превышают размер этого поля, все равно быть однозначно идентифицированными. Указание -u0 указывает на то, что в файл utmp должны помещаться только десятичные точечные адреса. -u0 также можно использовать, чтобы предотвратить выполнение sshd запросов DNS, если это не требуется механизмом аутентификации или конфигурацией. Механизмы аутентификации, которым может потребоваться DNS, включают HostbasedAuthentication и использование параметра from="pattern-list" в файле ключа. Параметры конфигурации, которым требуется DNS, включают использование шаблона USER@HOST в AllowUsers или DenyUsers.

-V      Отображает номер версии и завершает работу.

АУТЕНТИФИКАЦИЯ

Демон OpenSSH SSH поддерживает только протокол SSH версии 2. У каждого хоста есть уникальный ключ, который используется для его идентификации. При подключении клиента демон отправляет свой открытый ключ хоста. Клиент сравнивает этот ключ с собственной базой данных, чтобы убедиться, что он не изменился.

Для обеспечения прямой секретности используется соглашение о ключе Диффи-Хеллмана. В результате этого соглашения формируется общий сеансовый ключ. Остальная часть сеанса шифруется с использованием симметричного шифра. Клиент выбирает алгоритм шифрования из тех, которые предлагает сервер. Кроме того, целостность сеанса обеспечивается с помощью криптографического кода аутентификации сообщений (MAC).

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

Независимо от типа аутентификации, учетная запись проверяется на предмет доступности. Учетная запись считается недоступной, если она заблокирована, указана в списке DenyUsers или ее группа указана в списке DenyGroups. Определение заблокированной учетной записи зависит от системы. Некоторые платформы имеют собственную базу данных учетных записей (например, AIX), а другие изменяют поле passwd (например, '*LK*' в Solaris и UnixWare, '*' в HP-UX, содержащий 'Nologin' в Tru64, ' *LOCKED*' в начале в FreeBSD и '!' в большинстве дистрибутивов Linux). Если требуется отключить аутентификацию по паролю для учетной записи, но при этом разрешить аутентификацию по открытому ключу, поле passwd следует установить на какое-либо другое значение (например, 'NP' или '*NP*').

Если клиент успешно аутентифицирует себя, начинается диалог подготовки сеанса. В это время клиент может запросить выделение псевдо-tty, перенаправление соединений X11, перенаправление соединений TCP или перенаправление соединения аутентификационного агента по защищенному каналу.

После этого клиент либо запрашивает интерактивную оболочку, либо выполнение неинтерактивной команды, которую sshd выполнит через оболочку пользователя с помощью опции -c. Затем обе стороны переходят в режим сеанса. В этом режиме любая сторона может отправлять данные в любое время, и эти данные передаются в оболочку или команду на стороне сервера и в терминал пользователя на стороне клиента.

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


ПРОЦЕСС АУТЕНТИФИКАЦИИ

При успешной аутентификации пользователь, sshd выполняет следующее:

      Если аутентификация происходит в терминале (tty) и не указана команда, выводит время последней аутентификации и содержимое файла /etc/motd (если это не запрещено в файле конфигурации или в файле ~/.hushlogin; см. раздел «ФАЙЛЫ»).

      Если аутентификация происходит в терминале (tty), записывает время аутентификации.

      Проверяет наличие файла /etc/nologin; если он существует, выводит его содержимое и завершает работу (за исключением пользователя root).

      Переключается на выполнение с обычными правами пользователя.

      Настраивает базовую среду.

      Читает файл ~/.ssh/environment, если он существует, и пользователям разрешено изменять свою среду. См. опцию PermitUserEnvironment в sshd_config(5).

      Переходит в домашнюю директорию пользователя.

      Если файл ~/.ssh/rc существует и опция PermitUserRC в sshd_config(5) установлена, запускает его; в противном случае, если файл /etc/ssh/sshrc существует, запускает его; в противном случае запускает [xauth]({filename}../../xauth)(1). Файлы «rc» получают протокол X11 и cookie в стандартном вводе. См. раздел «SSHRC» ниже.

      Запускает оболочку пользователя или команду. Все команды выполняются в оболочке пользователя, указанной в системной базе данных паролей.

SSHRC

Если файл ~/.ssh/rc существует, sh(1) запускает его после чтения файлов среды, но перед запуском оболочки или команды пользователя. Он не должен выдавать никаких выходных данных в stdout; вместо этого следует использовать stderr. Если используется перенаправление X11, он будет получать пару «proto cookie» в своем стандартном вводе (и DISPLAY в своей среде). Скрипт должен вызывать xauth(1), потому что sshd не будет автоматически запускать xauth для добавления cookie X11.

Основная цель этого файла — запустить любые процедуры инициализации, которые могут потребоваться до того, как домашняя директория пользователя станет доступной; AFS является конкретным примером такой среды.

Этот файл, вероятно, будет содержать некоторый код инициализации, за которым следует что-то подобное:

if read proto cookie && [ -n "$DISPLAY" ]; then
if [ `echo $DISPLAY | cut -c1-10` = 'localhost:' ]; then
# X11UseLocalhost=yes
echo add unix:`echo $DISPLAY |
cut -c11-` $proto $cookie
else
# X11UseLocalhost=no
echo add $DISPLAY $proto $cookie
fi | xauth -q fi

Если этот файл не существует, запускается /etc/ssh/sshrc, и если его тоже нет, xauth используется для добавления cookie.

ФОРМАТ ФАЙЛА AUTHORTZED_KEYS

AuthorizedKeysFile указывает файлы, содержащие открытые ключи для аутентификации с использованием открытого ключа; если эта опция не указана, по умолчанию используются ~/.ssh/authorized_keys и ~/.ssh/authorized_keys2. Каждая строка файла содержит один ключ (пустые строки и строки, начинающиеся с «#», игнорируются как комментарии). Открытые ключи состоят из следующих разделенных пробелами полей: опции, тип ключа, ключ в кодировке base64, комментарий. Поле опций является необязательным. Поддерживаемые типы ключей:

_
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
_
ssh-ed25519
ssh-rsa

Поле комментария не используется ни для чего (но может быть полезно для пользователя, чтобы идентифицировать ключ).

Обратите внимание, что строки в этом файле могут быть длиной в несколько сотен байт (из-за размера кодировки открытого ключа) до предела в 8 килобайт, что позволяет использовать ключи RSA длиной до 16 килобит. Не стоит вводить их вручную; вместо этого скопируйте файлы id_ecdsa.pub, id_ecdsa_sk.pub, id_ed25519.pub, id_ed25519_sk.pub или id_rsa.pub и отредактируйте их.

sshd требует минимальный размер модуля RSA ключа 1024 бита.

Параметры (если они присутствуют) состоят из разделенных запятыми спецификаций параметров. Разрешены пробелы только внутри двойных кавычек. Поддерживаются следующие спецификации параметров (обратите внимание, что ключевые слова параметров не чувствительны к регистру):

agent-forwarding

Включает перенаправление аутентификационного агента, ранее отключенное опцией restrict.

cert-authority

Указывает, что указанный ключ является центром сертификации (CA), которому доверяют для проверки подписанных сертификатов для аутентификации пользователя.

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

command="команда"

Указывает, что команда выполняется каждый раз, когда этот ключ используется для аутентификации. Команда, указанная пользователем (если есть), игнорируется. Команда выполняется в псевдотерминале, если клиент запрашивает псевдотерминал; в противном случае она выполняется без псевдотерминала. Если требуется 8-битный чистый канал, не следует запрашивать псевдотерминал или следует указать no-pty. Кавычку можно включить в команду, заключив ее в обратные кавычки.

Эта опция может быть полезна для ограничения определенных открытых ключей, чтобы они выполняли только определенную операцию. Например, это может быть ключ, который разрешает удаленное резервное копирование, но больше ничего. Обратите внимание, что клиент может указать перенаправление TCP и/или X11, если они явно не запрещены, например, с помощью опции restrict.

Команда, первоначально предоставленная клиентом, доступна в переменной среды SSH_ORIGINAL_COMMAND. Обратите внимание, что эта опция применяется к выполнению оболочки, команды или подсистемы. Также обратите внимание, что эта команда может быть заменена директивой ForceCommand в sshd_config(5).

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

environment="ИМЯ=значение"

Указывает, что строка должна быть добавлена в среду при входе в систему с помощью этого ключа. Переменные среды, установленные таким образом, переопределяют другие значения переменных среды по умолчанию. Допускается несколько параметров этого типа. Обработка переменных среды отключена по умолчанию и управляется опцией PermitUserEnvironment.

expiry-time="временная метка"

Указывает время, после которого ключ не будет приниматься. Время можно указать в формате YYYYMMDD[Z] или YYYYMMDDHHMM[SS][Z]. Даты и время будут интерпретироваться в системном часовом поясе, если к ним не добавлен символ Z, в этом случае они будут интерпретироваться в часовом поясе UTC.


from="pattern-list"

Указывает, что в дополнение к аутентификации с использованием открытого ключа, либо каноническое имя удаленного хоста, либо его IP-адрес должны присутствовать в списке шаблонов, разделенных запятыми. См. раздел PATTERNS в ssh_config(5) для получения дополнительной информации о шаблонах.

В дополнение к подстановке символов подстановки, которая может применяться к именам хостов или адресам, раздел from может сопоставлять IP-адреса с использованием нотации CIDR address/masklen.

Цель этой опции — опционально повысить безопасность: аутентификация с использованием открытого ключа сама по себе не доверяет сети, серверам имен или чему-либо еще (кроме ключа); однако, если кто-то каким-то образом украдет ключ, ключ позволит злоумышленнику войти в систему из любой точки мира. Эта дополнительная опция затрудняет использование украденного ключа (в дополнение к ключу придется взламывать серверы имен и/или маршрутизаторы).

no-agent-forwarding

Запрещает пересылку агента аутентификации при использовании этого ключа для аутентификации.

no-port-forwarding

Запрещает пересылку TCP, когда этот ключ используется для аутентификации. Любые запросы на пересылку портов от клиента будут возвращать ошибку. Это может использоваться, например, в сочетании с опцией command.

no-pty Предотвращает выделение терминала (запрос на выделение терминала завершится неудачей).

no-user-rc

Отключает выполнение ~/.ssh/rc.

no-X11-forwarding

Запрещает пересылку X11, когда этот ключ используется для аутентификации. Любые запросы на пересылку X11 от клиента будут возвращать ошибку.

permitlisten="[host:]port"

Ограничивает удаленную пересылку портов с помощью ssh(1) -R, чтобы она могла прослушивать только на указанном хосте (необязательно) и порте. IPv6-адреса можно указывать, заключая адрес в квадратные скобки. Несколько опций permitlisten могут быть применены, разделенные запятыми. Имя хоста может включать символы подстановки, как описано в разделе PATTERNS в ssh_config(5). Указание порта * соответствует любому порту. Обратите внимание, что настройка GatewayPorts может дополнительно ограничить адреса прослушивания. Обратите внимание, что ssh(1) отправит имя хоста "localhost", если при запросе пересылки не был указан хост прослушивания, и что это имя обрабатывается иначе, чем явные адреса localhost "127.0.0.1" и "::1".

permitopen="host:port"

Ограничивает локальную пересылку портов с помощью ssh(1) -L, чтобы она могла подключаться только к указанному хосту и порту. IPv6-адреса можно указывать, заключая адрес в квадратные скобки. Несколько опций permitopen могут быть применены, разделенные запятыми. Подстановка символов подстановки или поиск имен не выполняются для указанных имен хостов, они должны быть буквальными именами хостов и/или адресами. Указание порта * соответствует любому порту.

port-forwarding

Включает пересылку портов, ранее отключенную опцией restrict.


principals="principals"

В строке, определяющей центр сертификации, указывает разрешенные принципалы для аутентификации по сертификату в виде списка, разделенного запятыми. По крайней мере, одно из имен из списка должно присутствовать в списке принципалов сертификата, чтобы сертификат был принят. Этот параметр игнорируется для ключей, которые не помечены как доверенные центры сертификации с помощью параметра cert-authority.

pty     Разрешает выделение псевдотерминала, ранее отключенное параметром `restrict`.

no-touch-required

Не требует подтверждения присутствия пользователя для подписей, созданных с использованием этого ключа. Этот параметр имеет смысл только для алгоритмов FIDO-аутентификатора ecdsa-sk и ed25519-sk.

verify-required

Требует, чтобы подписи, созданные с использованием этого ключа, подтверждали, что была выполнена проверка пользователя, например, с помощью PIN-кода. Этот параметр имеет смысл только для алгоритмов FIDO-аутентификатора ecdsa-sk и ed25519-sk.

restrict

Включает все ограничения, то есть отключает перенаправление портов, агента и X11, а также отключает выделение псевдотерминала и выполнение ~/.ssh/rc. Если в будущем будут добавлены какие-либо дополнительные возможности ограничения в файлах authorized_keys, они будут включены в этот набор.

tunnel="n"

Принудительно создает устройство tun(4) на сервере. Без этого параметра, если клиент запрашивает туннель, будет использовано следующее доступное устройство.

user-rc

Включает выполнение ~/.ssh/rc, ранее отключенное параметром restrict.

X11-forwarding

Разрешает перенаправление X11, ранее отключенное параметром restrict.

Пример файла authorized_keys:

# Комментарии разрешены в начале строки. Разрешены пустые строки.
# Обычный ключ, без ограничений
ssh-rsa ...
# Принудительная команда, отключение ПТ и всего перенаправления
restrict,command="dump /home" ssh-rsa ...
# Ограничение пунктов назначения перенаправления ssh -L
permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh-rsa ...
# Ограничение прослушивателей перенаправления ssh -R
permitlisten="localhost:8080",permitlisten="[::1]:22000" ssh-rsa ...
# Конфигурация для туннельного перенаправления
tunnel="0",command="sh /etc/netstart tun0" ssh-rsa ...
# Отмена ограничения для разрешения выделения ПТ
restrict,pty,command="nethack" ssh-rsa ...
# Разрешить FIDO-ключ без требования подтверждения прикосновения
no-touch-required _ ...
# Требовать проверки пользователя (например, PIN-кода или биометрии) для FIDO-ключа
verify-required _ ...
# Доверять ключу центра сертификации, разрешить FIDO без подтверждения прикосновения, если это запрошено в сертификате
cert-authority,no-touch-required,principals="user_a" ssh-rsa ...

ФОРМАТ ФАЙЛА SSH_KNOWN_HOSTS

Файлы /etc/ssh/ssh_known_hosts и ~/.ssh/known_hosts содержат открытые ключи хостов для всех известных хостов. Глобальный файл должен быть подготовлен администратором (необязательно), а файл для каждого пользователя поддерживается автоматически: каждый раз, когда пользователь подключается к неизвестному хосту, его ключ добавляется в файл для каждого пользователя.

Каждая строка в этих файлах содержит следующие поля: маркер (необязательно), имена хостов, тип ключа, закодированный в base64 ключ, комментарий. Поля разделены пробелами.

Маркер является необязательным, но если он присутствует, он должен быть одним из следующих: @cert-authority, чтобы указать, что строка содержит ключ центра сертификации (CA), или @revoked, чтобы указать, что ключ, содержащийся в строке, отозван и никогда не должен быть принят. В одной строке ключа должен использоваться только один маркер.

^ ostnames — это список шаблонов, разделенных запятыми («*» и «?» действуют как подстановочные знаки); каждый шаблон поочередно сравнивается с именем хоста. При аутентификации клиента sshd, например, при использовании HostbasedAuthentication, это будет каноническое имя хоста клиента. При аутентификации сервера [ssh]({filename}../../ssh)(1), это будет имя хоста, указанное пользователем, значение HostkeyAlias, если оно было указано, или каноническое имя хоста сервера, если использовалась опция [ssh]({filename}../../ssh)(1) CanonicalizeHostname.

Шаблон также может начинаться с «!», чтобы указать отрицание: если имя хоста соответствует отрицательному шаблону, оно не принимается (для этой строки), даже если оно соответствует другому шаблону в этой строке. Имя хоста или адрес могут быть заключены в квадратные скобки «[» и «]», за которыми следует двоеточие «:» и номер нестандартного порта.

Кроме того, имена хостов могут храниться в хешированной форме, которая скрывает имена хостов и адреса в случае раскрытия содержимого файла. Хешированные имена хостов начинаются с символа «|». В одной строке может быть только одно хешированное имя хоста, и ни один из вышеуказанных операторов отрицания или подстановки не может быть применен.

Тип ключа и ключ, закодированный в формате Base64, берутся непосредственно из ключа хоста; их можно получить, например, из /etc/ssh/ssh_host_rsa_key.pub. Необязательное поле комментария продолжается до конца строки и не используется.

Строки, начинающиеся с «#», и пустые строки игнорируются как комментарии.

При выполнении аутентификации хоста, аутентификация принимается, если в любой соответствующей строке присутствует правильный ключ; либо ключ, который точно соответствует, либо, если сервер представил сертификат для аутентификации, ключ удостоверяющего центра, который подписал сертификат. Чтобы ключ считался доверенным удостоверяющим центром, он должен использовать маркер «@cert-authority», описанный выше.

Файл известных хостов также предоставляет возможность пометить ключи как отозванные, например, когда известно, что связанный закрытый ключ был украден. Отозванные ключи указываются путем включения маркера «@revoked» в начале строки ключа, и они никогда не принимаются для аутентификации или в качестве удостоверяющих центров, но вместо этого будут вызывать предупреждение от [ssh]({filename}../../ssh)(1), когда они будут обнаружены.

Допускается (но не рекомендуется) иметь несколько строк или разные ключи хостов для одних и тех же имен. Это неизбежно произойдет, когда в файл будут помещены сокращенные формы имен хостов из разных доменов. Возможно, файлы содержат противоречивую информацию; аутентификация принимается, если из любого из файлов можно найти допустимую информацию.


Обратите внимание, что строки в этих файлах обычно состоят из сотен символов, и вам точно не захочется вводить ключи вручную. Вместо этого сгенерируйте их с помощью скрипта, ssh-keyscan(1) или, например, скопируйте /etc/ssh/ssh_host_rsa_key.pub и добавьте имена хостов в начало. ssh-keygen(1) также предлагает некоторые базовые функции автоматического редактирования для ~/.ssh/known_hosts, включая удаление хостов, соответствующих имени хоста, и преобразование всех имен хостов в их хешированные представления.

Пример файла ssh_known_hosts:

# Комментарии разрешены в начале строки
cvs.example.net,192.0.2.10 ssh-rsa AAAA1234.....=
# Хешированное имя хоста
|1|JfKTdBh7rNbXkVAQCRp4OQoPfmI=|USECr3SWf1JUPsms5AqfD5QfxkM= ssh-rsa
AAAA1234.....=
# Отзыванный ключ
@revoked * ssh-rsa AAAAB5W...
# Ключ центра сертификации, принимаемый для любого хоста в *.mydomain.com или *.mydomain.org
@cert-authority *.mydomain.org,*.mydomain.com ssh-rsa AAAAB5W...

ФАЙЛЫ

~/.hushlogin

Этот файл используется для подавления вывода времени последнего входа в систему и содержимого файла /etc/motd, если PrintLastLog и PrintMotd соответственно включены. Он не подавляет вывод баннера, указанного в Banner.

~/.rhosts

Этот файл используется для аутентификации на основе хоста (см. ssh(1) для получения дополнительной информации). На некоторых машинах этот файл может нуждаться в том, чтобы он был доступен для чтения всем пользователям, если домашний каталог пользователя находится в разделе NFS, поскольку sshd считывает его от имени пользователя root. Кроме того, этот файл должен принадлежать пользователю и не иметь разрешений на запись для других пользователей. Рекомендуемые разрешения для большинства машин: чтение/запись для пользователя и недоступность для других.

~/.shosts

Этот файл используется точно так же, как и .rhosts, но позволяет осуществлять аутентификацию на основе хоста без разрешения входа в систему с помощью rlogin/rsh.

~/.ssh/

Этот каталог является местом по умолчанию для хранения всех пользовательских конфигураций и информации для аутентификации. Нет никаких общих требований к тому, чтобы все содержимое этого каталога хранилось в секрете, но рекомендуемые разрешения: чтение/запись/выполнение для пользователя и недоступность для других.

~/.ssh/authorized_keys

Содержит список открытых ключей (ECDSA, Ed25519, RSA), которые можно использовать для входа в систему под этим пользователем. Формат этого файла описан выше. Содержимое файла не является конфиденциальным, но рекомендуемые разрешения: чтение/запись для пользователя и недоступность для других.

Если этот файл, каталог ~/.ssh или домашний каталог пользователя доступны для записи другим пользователям, то файл может быть изменен или заменен неавторизованными пользователями. В этом случае sshd не будет разрешать его использование, если опция StrictModes не установлена в значение «no».

~/.ssh/environment

Этот файл считывается при входе в систему (если он существует). Он может содержать только пустые строки, строки комментариев (начинающиеся с «#») и строки присваивания в формате name=value. Файл должен быть доступен для записи только пользователю; он не обязательно должен быть доступен для чтения кому-либо еще. Обработка среды отключена по умолчанию и управляется опцией PermitUserEnvironment.


~/.ssh/known_hosts

Содержит список ключей хостов для всех хостов, в которые пользователь входил, и которые еще не находятся в общесистемном списке известных ключей хостов. Формат этого файла описан выше. Этот файл должен быть доступен для записи только root/владельцу и может, но не обязательно, быть доступен для чтения всем.

~/.ssh/rc

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

/etc/hosts.allow
/etc/hosts.deny

Здесь определены элементы управления доступом, которые должны применяться с помощью tcp-wrappers. Дополнительные сведения см. в hosts_access(5).

/etc/hosts.equiv

Этот файл предназначен для аутентификации на основе хостов (см. ssh(1)). Он должен быть доступен для записи только пользователю root.

/etc/ssh/moduli

Содержит группы Диффи-Хеллмана, используемые для метода обмена ключами «Обмен группами Диффи-Хеллмана». Формат файла описан в moduli(5). Если в этом файле не найдено ни одной пригодной группы, будут использоваться фиксированные внутренние группы.

/etc/motd

См. motd(5).

/etc/nologin

Если этот файл существует, sshd отказывает в доступе ко всем, кроме root. Содержимое файла отображается любому, кто пытается войти в систему, и подключения для пользователей, не являющихся root, отклоняются. Файл должен быть доступен для чтения всем.

/etc/ssh/shosts.equiv

Этот файл используется точно так же, как и hosts.equiv, но позволяет осуществлять аутентификацию на основе хостов без разрешения входа с помощью rlogin/rsh.

/etc/ssh/ssh_host_ecdsa_key
/etc/ssh/ssh_host_ed25519_key
/etc/ssh/ssh_host_rsa_key

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

/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_ed25519_key.pub
/etc/ssh/ssh_host_rsa_key.pub

Эти файлы содержат открытые части ключей хостов. Эти файлы должны быть доступны для чтения всем, но доступны для записи только пользователю root. Их содержимое должно соответствовать соответствующим закрытым частям. Эти файлы на самом деле ни для чего не используются; они предоставляются для удобства пользователя, чтобы его содержимое можно было скопировать в файлы известных хостов. Эти файлы создаются с помощью ssh-keygen(1).

/etc/ssh/ssh_known_hosts

Общесистемный список известных ключей хостов. Этот файл должен быть подготовлен системным администратором для хранения открытых ключей хостов всех машин в организации. Формат этого файла описан выше. Этот файл должен быть доступен для записи только root/владельцу и должен быть доступен для чтения всем.

/etc/ssh/sshd_config

Содержит данные конфигурации для sshd. Формат файла и параметры конфигурации описаны в sshd_config(5).

/etc/ssh/sshrc

Аналогично ~/.ssh/rc, его можно использовать для указания глобальных инициализаций при входе в систему, специфичных для машины. Этот файл должен быть доступен для записи только пользователю root и должен быть доступен для чтения всем.


/run/sshd
Каталог, используемый sshd во время разделения привилегий на предварительном этапе аутентификации. Каталог не должен содержать файлов и должен принадлежать пользователю root и не быть доступным для записи группами пользователей или всем пользователям.

/run/sshd.pid
Содержит идентификатор процесса (PID) sshd, прослушивающего соединения (если запущено несколько демонов одновременно для разных портов, этот файл содержит PID последнего запущенного демона). Содержимое этого файла не является конфиденциальным; оно может быть доступно для чтения всем пользователям.

ССЫЛКИ

scp(1), sftp(1), ssh(1), ssh-add(1), ssh-agent(1), ssh-keygen(1), ssh-keyscan(1), chroot(2), hosts_access(5), moduli(5), sshd_config(5), inetd(8), sftp-server(8)

АВТОРЫ

OpenSSH является производной от оригинальной бесплатной версии ssh 1.2.12, созданной Тату Илоненом. Аарон Кэмпбелл, Боб Бек, Маркус Фридль, Нильс Провос, Тео де Раадт и Даг Сонг исправили множество ошибок, добавили новые функции и создали OpenSSH. Маркус Фридль добавил поддержку версий протокола SSH 1.5 и 2.0. Нильс Провос и Маркус Фридль добавили поддержку разделения привилегий.