sshd - OpenSSH SSH демон sshd [-deiqtDL46] [-b битов] [-f файл_конфигурации] [-g время_задержки_регистрации] [-h файл_ключа_машины] [-k время_генерации_ключа] [-p порт] [-u величина] [-V идентификатор_протокола_клиента]

DESCRIPTION
sshd (SSH Daemon) это программа-демон для ssh(1). Вместе эти программы заменяют rlogin и rsh и предоставляют защищенную и зашифрованную связь между двумя не доверенными компьютерами через незащищенную сеть. Установка и использование программ упрощены настолько, насколько это возможно. sshd это демон, который ожидает соединения от клиентов. Обычно он запускается при загрузке системы из /etc/rc. Он создает нового демона для каждого нового соединения. Ответвленный демон обрабатывает обмен ключами, шифрование, аутентификацию, выполнение команд и обмен данными. Эта реализация sshd поддерживает обе версии протокола SSH, 1 и 2, одновременно. sshd работает следующим образом. Каждая машина имеет машино-зависимый ключ RSA (обычно 1024 битный) используемый для идентификации компьютера. Дополнительно, когда стартует демон, он генерирует RSA ключ сервера (обычно 768 битный). Этот ключ, обычно, регенерируется каждый час, если он был использован, и никогда не сохраняется на диске. Каждый раз, когда соединяется клиент, демон отвечает со своими публичными ключами машины и сервера. Клиент сравнивает RSA ключ машины со своей базой данных, что бы убедиться, что ключ не был изменен. Затем клиент генерирует 256-битное произвольное число. Это произвольное число шифруется, при помощи обоих (машины и сервера) ключей, и отправляется в зашифрованном виде серверу. Затем обе стороны используют это произвольное число как ключ сеанса, который используется для шифрации всей дальнейшей связи в течении сеанса. Остальная часть сеанса шифруется с использованием обычного шифра, Blowfish или 3DES. В настоящее время по умолчанию используется 3DES. Клиент выбирает алгоритм шифрации из предложенных сервером вариантов. Затем, сервер и клиент переходят в диалог аутентификации. Клиент пытается идентифицировать себя, с использованием .rhosts аутентификации, .rhosts аутентификации комбинированной с RSA аутентификацией машины, RSA аутентификацией запроса-ответа, или аутентификацией с паролем. Rhosts аутентификация обычно отключена, так как она абсолютно небезопасна, но может быть задействована, при желании, в файле конфигурации сервера. Защита системы не совершенна, если не задействованы rshd(8), rlogind(8), rexecd(8) и rexd(8) (это полностью отключает на машине rlogin(1) и rsh(1)). Версия 2 работает похоже: Каждый компьютер имеет машино-зависимый DSA-ключ используемый для идентификации машины. Однако, при старте демона он не генерирует ключ сервера. Первичная защита обеспечивается посредством соглашения ключа Diffie-Hellman. Это соглашение ключа заключается в разделяемом ключе сеанса. Остальная часть сеанса шифруется при помощи симметричного шифра. В настоящий момент это 128-ми битный AES, Blowfish, 3DES, CAST128, Arcfour, 192-х битный AES или 256-ти битный AES. Клиент для использования выбирает алгоритмы шифрования из предложенных сервером. Дополнительно, целостность сеанса обеспечивается через криптографическое сообщение кода аутентификации (hmac-sha1 или hmac-md5). Протокол версии 2 обеспечивает метод аутентификации пользователя, основанный на методе публичного ключа (PubkeyAuthentication) или методе аутентификации машины-клиента (HostbasedAuthentication), обычной аутентификации паролем и по принципу запрос - ответ. Если клиент аутентифицировал себя удачно, то будет выведен диалог для подготовки сеанса. В этот момент клиент может запросить такие вещи как назначение псевдо-терминала, перенаправление соединения Х11, перенаправление TCP/IP соединения или перенаправление соединения агента аутентификации через защищенный канал. Наконец, клиент запрашивает оболочку или выполнение команды. Затем стороны входят в режим сеанса. В этом режиме, каждая из сторон в любой момент может пересылать данные и эти данные будут переданы оболочке или команде на стороне сервера и на пользовательский терминал со стороны клиента. Когда прекращается выполнение пользовательской программы и все перенаправленные Х11 и другие соединения закрыты, сервер посылает клиенту команду со статусом выхода и обе стороны завершают сеанс. sshd может быть сконфигурирован при помощи командной строки или файла конфигурации. Параметры командной строки переопределяют значения указанные в файле конфигурации. При получении сигнала отбоя SIGHUP, sshd перечитывает свой файл конфигурации путём запуска собственной копии с тем же самым именем с которым был запущен, например, /usr/sbin/sshd. Используются следующие параметры: -b биты Определяет число бит в ключе сервера эфемерного протокола версии 1 (по умолчанию 768). -d Режим отладки. Сервер посылает отладочную информацию в файл регистрации событий системы и не переходит в фоновый режим работы. Также сервер не создает дочерних процессов и обрабатывает только одно соединение. Этот параметр предназначен только для настройки сервера. Несколько параметров -d, указанных один за другим, повышают уровень отладки. Максимум это 3. -е Если указан этот параметр, sshd направит вывод в консоль вместо механизма регистрации событий системы. -f файл_конфигурации Определяет имя файла конфигурации. По умолчанию это /etc/openssh/sshd_config. sshd отказывается работать не имея файла конфигурации. -g время_задержки_регистрации Позволяет клиенту растянуть время в течении которого клиент должен себя аутентифицировать (по умолчанию 600 секунд). Если клиент не смог аутентифицировать себя в течение этого времени, сервер отключается. Значение равное нулю означает неограниченное время ожидания. -h файл_ключа_машины Определяет файл, из которого будет считан ключ машины (по умолчанию это /etc/openssh/ssh_host_key). Этот параметр должен быть указан, если sshd запущен не от имени суперпользователя (так как обычно файл машины доступен для чтения только суперпользователю (root)). Существует вероятность иметь несколько ключей машины для разных версий протокола и разных алгоритмов ключей. -i Определяет, что sshd должен быть запущен из inetd. Обычно sshd не запускается из inetd, так как требуется генерировать ключ сервера до ответа клиенту, а это может отнять десятки секунд. Клиент будет вынужден ожидать слишком долго, если ключ будет регенерирован каждый раз. Однако, при малых размерах ключа (т.е., 512), использование sshd из inetd может быть оправдано. -k время_генерации_ключа Определяет, как часто будет регенерирован ключ сервера эфемерного протокола версии 1 (по умолчанию 3600 секунд, или один раз в час). Мотивацией для регенерации ключа так часто служит то, что ключ нигде не сохраняется и, по истечении примерно часа, восстановить ключ для прерванных соединений становится невозможно даже если машина была взломана или захвачена физически. Значение ноль означает, что ключ никогда не будет регенерирован. -p порт Определяет порт, на котором сервер будет ожидать соединения (по умолчанию 22). -q Режим молчания. В системный журнал регистрации событий не будет занесено никакой информации. Обычно фиксируется подключение, аутентификация и разрыв каждого соединения. -t Режим тестирования. Только проверяет соответствие файла конфигурации и безопасность ключей. Это полезно для проверки обновления sshd, если файлы конфигурации были изменены. -u величина Этот параметр определяет размер полей в структуре utmp хранящей имя удаленной машины. Если определенное имя машины превышает значение величина, то взамен будет использовано точечное десятичное значение. Это позволяет машинам имеющим слишком длинные имена вызывающие переполнение этого поля быть идентифицированными. Указание -u0 означает, что в utmp-файл должен быть помещен только точечный десятичный адрес. -D Когда указан этот параметр, sshd не будет переведен в режим работы демона. Это позволит осуществлять более легкий мониторинг sshd. -V идентификатор_протокола_клиента SSH-2 совместимый режим. Если указан этот параметр, sshd подразумевает, что клиент послал опознавательную строку поддерживаемой версии и пропустил Обмен Идентификатором Версии Протокола (Protocol Version Identification Exchange). Этот параметр не предусматривает прямой вызов. -4 Принуждает sshd использовать только IPv4 адреса. -6 Принуждает sshd использовать только IPv6 адреса. sshd считывает данные о конфигурации из /etc/openssh/sshd_config (или из файла указанного в командной строке при помощи параметра -f). Файл содержит пары ключевое слово - значение, по одному на строку. Строки, начинающиеся с `#' и пустые строки, интерпретируются как комментарии. Допустимы следующие ключевые слова. AFSTokenPassing Определяет, может ли AFS быть переадресован серверу. По умолчанию стоит ``yes''. AllowGroups Это ключевое слово может следовать за списком группы имен разделенных пробелами. Если указано, регистрация в системе разрешается только пользователям, чья главная или вспомогательная группы соответствуют какому-либо из шаблонов. ``*'' и ``?'' могут быть использованы как символы подстановки в шаблонах. Допустимы только имена групп; числовой идентификатор группы не распознается. По умолчанию разрешена регистрация в системе независимо от списка группы. AllowTcpForwarding Определяет, будет ли разрешено перенаправление TCP. По умолчанию ``yes''. Имейте ввиду, что отключение пересылки TCP не увеличит безопасность пока пользователям не запрещен доступ к командной оболочке, так как они всегда могут установить свои собственные перенаправления. AllowUsers После этого ключевого слова может следовать разделённый пробелами список имен пользователей. Если определено, регистрация в системе разрешена только пользователям, чьи имена соответствуют одному из шаблонов. ``*'' и ``?'' могут быть использованы как символы подстановки в шаблонах. Допустимы только имена пользователей; числовой идентификатор пользователя не распознается. По умолчанию разрешена регистрация в системе независимо от имени пользователя. Banner В некоторых местах послание предупредительного сообщения перед аутентификацией может быть уместно в целях достижения легитимности защиты. Содержимое указанного файла будет отправлено удаленному пользователю прежде, чем будет разрешена аутентификация. Этот параметр доступен только с протоколом версии 2. ChallengeResponseAuthentication Определяет, разрешается ли обратная проверка подлинности вызова. В настоящее время есть поддержка только для skey(1) аутентификации. Значение по умолчанию ``yes''. Ciphers Определяет допустимые, для протокола версии 2, шифры. Множество шифров должно быть разделено через запятую. По умолчанию это ``blowfish-cbc,aes128-cbc,3des-cbc,cast128-cbc,arcfour''. CheckMail Определяет, должен ли sshd проверять наличие новой почты при интерактивной регистрации в системе. По умолчанию это установлено в ``yes''. ClientAliveInterval Устанавливает время ожидания в секундах после которого, если не поступает информация со стороны клиента, sshd отправит через защищённый канал запрос отклика клиенту. По умолчанию используется 0, что означает, что клиенту не будет направлен такой запрос. Этот параметр применим только с протоколом версии 2. ClientAliveCountMax Устанавливает количество запросов клиенту (см.выше), которое может быть отправленно без получения sshd на них отклика. Если предел достигнут, sshd разъединится с клиентом и завершит сеанс. Имейте в виду, использование запросов client alive очень сильно отличается от Keepalive (см.далее). Данные запросы отправляются через защищённый канал и поэтому не могут быть подменены. Параметр TCP keepalive включаемый при помощи Keepalive может быть подменён. Вы захотите использовать механизм client alive, если на машинах-клиентах подключаемых к серверу имеется что-то важное. Значение по умолчанию - 3. Если вы установите значение интервала ClientAliveInterval (см.выше) равным 15 и оставите этот параметр без изменений, то не отвечающие ssh-клиенты будут отключены примерно через 45 секунд. DenyGroups Это ключевое слово может следовать после списка имен групп разделенных пробелами. Если указано, регистрация в системе пользователям, чья главная или вспомогательная группа соответствуют содержащимся в списке шаблонам, не разрешается. ``*'' и ``?'' могут быть использованы как символы подстановки в шаблонах. Допустимы только имена групп; числовой идентификатор группы не распознается. По умолчанию разрешена регистрация в системе независимо от списка группы. DenyUsers Это ключевое слово может следовать после списка имен пользователей, разделенных пробелами. Если указано, регистрация в системе пользователям, чьи имена пользователей соответствуют содержащимся в списке шаблонам, не разрешается. ``*'' и ``?'' могут быть использованы как символы подстановки в шаблонах. Допустимы только имена пользователей; числовой идентификатор пользователя не распознается. По умолчанию разрешена регистрация в системе независимо от имени пользователя. GatewayPorts Определяет, позволено ли удаленным машинам подключение к портам, перенаправленным для клиента. Параметр должен быть ``yes'' или ``no''. По умолчанию ``no''. HostbasedAuthentication Указывает, разрешен ли rhosts или аутентификация /etc/hosts.equiv в сочетании с успешной аутентификацией посредством аутентификации с открытым ключём машины-клиента (по-машинная аутентификация). Этот параметр схож с RhostsRSAAuthentication и применим только к протоколу версии 2. По умолчанию ``no''. HostKey Указывает файл содержащий приватные ключи машины (по умолчанию /etc/openssh/ssh_host_key) используемые для протоколов SSH версии 1 и 2. Имейте ввиду, что sshd будет отвергать использование этого файла, если он доступен группе/всем для чтения. Это позволяет иметь несколько файлов с ключами машины. Ключи ``rsa1'' используются для версии 1, и ``dsa'' или ``rsa'' для версии 2 протокола SSH. IgnoreRhosts Указывает, что файлы .rhosts и .shosts не должны использоваться при RhostsAuthentication, RhostsRSAAuthentication или HostbasedAuthentication. /etc/hosts.equiv и /etc/openssh/shosts.equiv при этом по прежнему используются. Значение по умолчанию ``yes''. IgnoreUserKnownHosts Указывает, будет ли sshd игнорировать пользовательский $HOME/.ssh/known_hosts в процессе RhostsRSAAuthentication или HostbasedAuthentication. По умолчанию ``no''. KeepAlive Указывает, будет ли система посылать другой стороне контрольные сообщения для удержания соединения активным. Если они посылаются, то разрыв соединения или аварийный отказ одной из машин будет должным образом замечен. Однако, при этом временная потеря маршрута повлечет за собой разрыв соединения и некоторые люди сочтут это раздражающим. С другой стороны, если контрольные сообщения не посланы, сеанс на сервере может зависнуть, оставив после себя ``пользователей-привидений'' и отнимая ресурсы сервера. По умолчанию это значение ``yes'' (для отправки контрольных сообщений) и сервер будет уведомлен, если сеть не функционирует или клиент перезагружается. Это позволит избежать постоянных зависаний сервера. Для отключения контрольных сообщений в файлах конфигурации сервера и клиента должно быть установлено значение ``no''. KerberosAuthentication Определяет, дозволена ли аутентификация Kerberos. Это может быть либо в форме тикетов Kerberos или, если PasswordAuthentication установлена в ``yes'', пароль, предоставленный пользователем, будет утвержден через Kerberos KDC. Для использования этого параметра серверу необходима Kerberos servtab, которая разрешит проверку идентификации KDC. Значение по умолчанию ``yes''. KerberosOrLocalPasswd Если это используется и аутентификация паролем через Kerberos не удалась, тогда пароль будет проверен через любой дополнительный локальный механизм, такой как /etc/passwd. Значение по умолчанию ``yes''. KerberosTgtPassing Определяет, может ли быть перенаправлен Kerberos TGT к серверу. Значение по умолчанию ``no'', это работает таким образом когда Kerberos KDC - фактически AFS kaserver. KerberosTicketCleanup Определяет, уничтожать ли автоматически файл кэша тикета пользователя при отключении от системы. Значение по умолчанию ``yes''. KeyRegenerationInterval В протоколе версии 1, эфемерный ключ сервера будет автоматечески воссоздан по истечении этого количества секунд (если это используется). Цель регенерации состоит в том, чтобы предохранить шифрованные установленные сеансы от более поздних вторжений на машину и захвата ключей. Ключ нигде не сохраняется. Если установлено значение 0, то ключ никогда не будет воссоздан. Значение по умолчанию 3600 (секунд). ListenAddress Указывает с каких локальных адресов sshd должен ожидать соединения. Может быт использован следующий формат записей: ListenAddress host|IPv4_addr|IPv6_addr
ListenAddress host|IPv4_addr:port
ListenAddress [host|IPv6_addr]:port
Если не указан порт, sshd ожидает соединение со всех адресов и на все указанные ранее параметры Port. По умолчанию ожидается соединение со всех локальных адресов. Допустимы множественные значения ListenAddress. Дополнительно, любые парамеры Порт должны предшествовать этому параметру. LoginGraceTime Сервер отключается по истечении этого времени, если пользователю не удалась регистрация в системе. Если стоит значение 0, то время ожидания не ограничено. Значение по умолчанию 60 (секунд). LogLevel Задает степень многословности, который используется при регистрации сообщений от sshd. Допустимыми являются значения: QUIET, FATAL, ERROR, INFO, VERBOSE и DEBUG. По умолчанию используется INFO. Регистрация с уровнем DEBUG нарушает секретность пользователей и не рекомендуется. MACs Определяет допустимый алгоритм MAC (код установления подлинности сообщения). Алгоритм MAC используется в протоколе версии 2 для защиты целостности данных. Множественные алгоритмы должны быть разделены через запятую. Значение по умолчанию ``hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@openssh.com, hmac-sha1-96,hmac-md5-96''
MaxStartups Определяет максимальное число одновременных неавторизованных подключений к демону sshd. Дополнительные подключения будут отвергнуты до тех пор, пока не будет произведена аутентификация или не истечет LoginGraceTime для соединения. Значение по умолчанию 10. Как альтернатива может быть задействован ранний произвольный сброс путем указания трех разделенных через двоеточие значений ``старт:норма:полная'' (т.е., "10:30:60"). sshd отвергнет соединение с вероятностью ``норма/100'' (30%) если имеется ``старт'' (10) неавторизованных соединений. Вероятность возрастает линейно и все попытки соединения будут отвергнуты при достижении числа неавторизованных соединений значения ``полная'' (60). PAMAuthenticationViaKbdInt Указывает, разрешена ли обратная проверка подлинности вызова при запросе PAM-аутентификации. Это сделает возможным использование модулей аутентификации PAM, но это также позволит идентификацию паролем независимо от того, заблокирован ли PasswordAuthentication. Значение по умолчанию ``no''. PasswordAuthentication Указывает, разрешена ли аутентификация паролем. Значение по умолчанию ``yes''. .TP PermitEmptyPasswords Когда разрешена аутентификация паролем, это указывает, позволяет ли сервер регистрацию в системе с пустой строкой пароля. Значение по умолчанию ``no''. PermitRootLogin Определяет, разрешена ли суперпользователю регистрация в системе с использованием ssh(1). Параметр должен быть ``yes'', ``without-password'', ``forced-commands-only'' или ``no''. Значение по умолчанию `no''. Если этот параметр установлен в значение ``without-password'', то аутентификация паролем для суперпользователя будет выключена. Если этот параметр установлен в значение ``forced-commands-only'', то будет разрешена регистрация суперпользователя в системе с публичным ключем, но только если был указан параметр команда (что может быть полезно для снятия удаленных резервных копий, даже если регистрация суперпользователя в системе обычно не разрешена). Все другие методы аутентификации для суперпользователя отключены. PidFile Определяет файл, который содержит идентификатор процесса для демона sshd. По умолчанию это /var/run/sshd.pid. Port Определяет номер порта по умолчанию, на котором sshd ожидает соединения. По умолчанию это 22. Допустимы множественные значения для параметра этого типа. Смотри также ListenAddress. PrintLastLog Указывает, будет ли sshd выводить дату и время последнего входа пользователя в систему. По умолчанию ``yes''. PrintMotd Определяет, будет ли sshd выводить /etc/motd, когда пользователь регистрируется в системе в интерактивном режиме. (В некоторых системах это может быть также напечатано оболочкой, /etc/profile, или эквивалентом.) Значение по умолчанию ``yes''. Protocol Определяет версию протокола, которую должен поддерживать sshd. Допустимые значения ``1'' и ``2''. Множество версий должно быть перечислено через запятую. Значение по умолчанию ``2,1''. PubkeyAuthentication Определяет, дозволена ли аутентификация публичным ключем. По умолчанию ``yes''. Имейте ввиду, что это применимо только к протоколу версии 2. ReverseMappingCheck Определяет, будет ли sshd предпринимать попытки проверить имя удаленной машины и проверять, что полученное имя машины для удаленного IP-адреса указывает обратно на тот же IP-адрес. Значение по умолчанию ``no''. RhostsAuthentication Определяет, является ли использование rhosth или /etc/hosts.equiv достаточным для аутентификации. Обычно, этот метод не должен быть разрешен, так как он небезопасен. Вместо этого должна быть использована RhostsRSAAuthentication, так как это осуществляет RSA-базирующуюся аутентификацию машины в дополнение к нормальной rhosts или /etc/hosts.equiv аутентификации. Значение по умолчанию ``no''. Этот параметр применим к протоколу версии 1. RhostsRSAAuthentication Определяет, допустимо ли использование rhosts или /etc/hosts.equiv аутентификации вместе с успешной RSA аутентификацией машины. Значение по умолчанию ``no''. Этот параметр применим только для протокола версии 1. RSAAuthentication Определяет, разрешена ли чистая RSA аутентификация. Знамение по умолчанию ``yes''. Имейте ввиду, что этот параметр применим только для протокола версии 1. ServerKeyBits Определяет количество бит в ключе сервера эфемерного протокола версии 1. Минимальное значение 512, значение по умолчанию 768. StrictModes Определяет, будет ли sshd проводить проверку режимов и права доступа пользовательских файлов и домашнего каталога перед разрешением регистрации в системе. Это желательно потому, что новички иногда оставляют свои каталоги или файлы доступными для записи всем. Значение по умолчанию ``yes''. Subsystem Конфигурирует внешнюю подсистему (напр., демон передачи файлов). Параметрами должны быть название подсистемы и команда для выполнения по запросу подсистемы. Команда sftp-server(8) задействует подсистему передачи файлов ``sftp''. По умолчанию подсистемы не определены. Обратите внимание, что это применимо только к протоколу версии 2. SyslogFacility Присваивает код гибкости, который используется при регистрации сообщений от sshd. Допустимые значения: DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7. По умолчанию используется AUTH. UseLogin Определяет, будет ли использован login(1) для интерактивного сеанса регистрации в системе. Имейте ввиду, что login(1) никогда не используется для удаленного выполнения команд. Значение по умолчанию ``no''. X11DisplayOffset Определяет первый доступный номер дисплея для перенаправления Х11 для sshd. Это предохраняет sshd от конфликтов с настоящими серверами Х11. Значение по умолчанию 10. X11Forwarding Определяет, разрешено ли перенаправление Х11. Значение по умолчанию ``yes''. Примите к сведению, что отключение перенаправления Х11 в любом случае не усилит защиту, так как пользователи всегда могут установить свои собственные перенаправления. XAuthLocation Определяет месторасположение программы xauth(1). По умолчанию это /usr/X11R6/bin/xauth. SshVersion Определяет версию программного обеспечения, которая будет отображена. По умолчанию это текущая версия, т.e. OpenSSH_2.9p2. Если пользователь успешно зарегистрировал себя в системе, sshd делает следующее: 1. Если регистрация в системе произведена на терминале и не определена никакая команда, то отображается время последнего входа в систему и /etc/motd (если не отключено в файле конфигурации или $HOME/.hushlogin; смотри секцию ФАЙЛЫ). 2. Если регистрация в системе произведена на терминале, записывает время регистрации. 3. Проверяет /etc/nologin; если он присутствует, печатает содержимое и выходит (исключение root). 4. Переходит к выполнению с привилегиями нормального пользователя. 5. Устанавливает базовые переменные. 6. Считывает $HOME/.ssh/environment, если таковой имеется. 7. Переходит в домашний каталог пользователя. 8. Если имеется $HOME/.ssh/rc, выполняет его, если имеется /etc/openssh/sshrc, выполняет его, в противном случае выполняет xauth. ``rc'' файлы даются протоколом аутентификации Х11 и cookie в стандартный ввод. 9. Запускает оболочку пользователя или выполняет команду. Файл $HOME/.ssh/authorized_keys содержит список RSA ключей, которым разрешена RSA аутентификация по протоколу версии 1. Аналогично, файл $HOME/.ssh/authorized_keys2 содержит список DSA и RSA ключей, которым разрешена аутентификация публичным ключом (PubkeyAuthentication) по протоколу версии 2. Каждая строка файла содержит один ключ (пустые строки или строки, начинающиеся со знака `#' считаются комментариями и будут игнорированы). Каждый публичный ключ RSA состоит из следующих полей разделенных пробелами: параметры, биты, экспонент, модуль, комментарий. Каждый публичный ключ протокола версии 2 состоит из: параметра, типа ключа, кодированного base64 ключа, комментария. Поля параметров не обязательны; их присутствие определено тем, имеется ли в начале строки цифра или нет (поле параметра никогда не начинается с цифры). Поля: биты, образцы, модули и комментарии даны для ключа RSA, для протокола версии 1; поле комментария ни для чего не используется (но может быть удобно пользователю для идентификации ключа). Для протокола версии 2 типом ключа является ``ssh-dss'' или ``ssh-rsa''. Обратите внимание, что строки в этих файлах, обычно, имеют несколько сотен байт длины (из-за размера модуля ключа RSA). Вы не должны его вводить туда; вместо этого скопируйте файлы identity.pub, id_dsa.pub или id_rsa.pubи отредактируйте. Параметры (если имеются) состоят из разделенных через запятую определений параметров. Пробелы не допустимы, кроме заключенных в двойные кавычки. Поддерживаются следующие определения параметров: from="список-шаблонов" Указывает, что в дополнение к RSA аутентификации, в списке шаблонов, через запятую должно быть представлено каноническое имя удаленной машины. ( `*' и `?' используются как символы подстановки). Этот список может также содержать шаблон инвертированный знаком `!' в начале; если каноническое имя соответствует инвертированному шаблону, то ключ не будет акцептирован. Назначение этого параметра, произвольное увеличение защиты: RSA аутентификация сама по себе на доверяет сети или серверу имен или чему-либо (кроме ключа); однако, если кто-нибудь как-нибудь перехватит ключ, то ключ позволит вторгшемуся войти в систему из любой точки мира. Этот дополнительный параметр делает использование ворованных ключей более затруднительным (в дополнение к одному только ключу компроментировали бы серверы имен и/или маршрутизаторы). command="команда" Указывает, что команда будет выполнена всякий раз, когда при аутентификации используется данный ключ. Команда, данная (любым) пользователем, игнорируется. Команда выполняется на псевдо-терминале, если соединение требует псевдо-терминала; в противном случае это выполняется без терминала. Обратите внимание, если вы имеете чистый 8-ми битный канал, вы не должны запрашивать псевдо-терминал или указать no-pty. В команду может быть включена кавычка, предварённая символом обратного слэша. Этот параметр полезен для ограничения некоторых RSA-ключей выполнением только специфических операций. Примером может служить ключ, которому разрешено выполнять удаленные операции резервного копирования и ничего более. Учтите, что клиент может указать перенаправление TCP/IP и/или X11, если они не запрещены явно. environment="ИМЯ=значение" Определяет, что при регистрации в системе с использованием данного ключа к окружению добавляется строка. Переменные окружения указанные таким способом перепишут прочие значения заданного по умолчанию окружения. Допускается использование множества параметров этого типа. no-port-forwarding Запрещает перенаправление TCP/IP, когда для аутентификации используется данный ключ. Любой запрос на перенаправление порта возвратит клиенту сообщение об ошибке. Это может быть использовано, например, вместе с параметром command. no-X11-forwarding Запрещает перенаправление Х11, когда для аутентификации используется данный ключ. Любой запрос на перенаправление порта возвратит клиенту сообщение об ошибке. no-agent-forwarding Запрещает перенаправление агента аутентификации, если при аутентификации используется данный ключ. no-pty Предотвращает назначение терминала (запрос на назначение псевдо-терминала закончится неудачей). permitopen="машина:порт" Ограничивает локальное ``ssh -L'' перенаправление портов таким образом, что соединение может быть сделано только к указанной машине и порту. Допускается множественное использование параметров permitopen разделённых через запятую. Не допускается использование шаблонов в названиях машин, только литеральные домены или адреса. restricted-forwarding-to="шаблон-списка-пар" Определяет, что перенаправление будет запрещено в соответствии со списком разделенных через запятую пар образцов в формате машина:порт (`*' и `?' зарезервированы как знаки подстановки). Список также может содержать шаблоны, отрицаемые при помощи знака `!'. 1024 33 12121...312314325 ylo@foo.bar from="*.niksula.hut.fi ,!pc.niksula.hut.fi " 1024 35 23...2334 ylo@niksula command="dump /home",no-pty,no-port-forwarding 1024 33 23...2323 backup.hut.fi permitopen="10.2.1.55:80",permitopen="10.2.1.56:25" 1024 33 23...2323 Файлы /etc/openssh/ssh_known_hosts, /etc/openssh/ssh_known_hosts2, $HOME/.ssh/known_hosts и $HOME/.ssh/known_hosts2 содержат публичные ключи машин для всех известных машин. Глобальный файл должен быть подготовлен администратором (дополнительно), пользовательский файл обслуживается автоматически: каждый раз, как пользователь связывается с неизвестной машины, ее ключ автоматически заносится в файл пользователя. Каждая строка в этом файле содержит следующие поля: имена машин, биты, экспонент, модули, комментарии. Поля разделены пробелами. Имена машин, это разделенный запятыми список шаблонов ('*' и '?' используются как знаки подстановки); каждый шаблон согласуется с соответствующим каноническим именем машины (когда аутентифицирует клиент) или согласуется с именем допустимого пользователя (когда аутентифицирует сервер). Этот шаблон может также быть предварен знаком `!' для обозначения отрицания: если имя машины соответствует отрицаемому шаблону, оно будет отвергнуто (этой строкой) даже если оно соответствует другому шаблону в этой же строке. Биты, экспоненты и модули берутся прямо из RSA ключа машины; они могут быть получены, например, из /etc/openssh/ssh_host_key.pub. Необязательное поле комментария простирается до конца строки и не используется. Строки, начинающиеся с `#' и пустые строки, игнорируются как комментарии. В момент аутентификации машины, аутентификация акцептируется, если любая совпавшая строка содержит правильный ключ. Таким образом это позволяет (но это не рекомендуется) иметь несколько строк или различных ключей машин с одним и тем же именем. Это неизбежно случится, когда в файл помещены краткие формы имен машин из различных доменов. Возможно, что файлы содержат противоречивую информацию; аутентификация акцептируется, если подходящая информация может быть найдена в другом файле. Обратите внимание, что строки в этих файлах обычно имеют длину в несколько сотен знаков и вы определенно не захотите заносить эту информацию в ключи машин от руки. Скорее, вы сделаете это при помощи сценария оболочки или взяв /etc/openssh/ssh_host_key.pub и добавив впереди имя машины. closenet,...,130.233.208.41 1024 37 159...93 closenet.hut.fi
cvs.openbsd.org,199.185.137.3 ssh-rsa AAAA1234.....= /etc/openssh/sshd_config Содержит данные конфигурации для sshd. Этот файл должен быть доступен для записи только для суперпользователя, но, это желательно (но не обязательно), что бы он был доступен для чтения остальным. /etc/openssh/ssh_host_key, /etc/openssh/ssh_host_dsa_key, /etc/openssh/ssh_host_rsa_key
Эти три файла содержат приватную часть ключей машины. Владельцем этих файлов должен быть только суперпользователь, открыты для чтения только для суперпользователя и не доступны для остальных. Имейте ввиду, что sshd не будет работать, если эти файлы доступны для группы/всех. /etc/openssh/ssh_host_key.pub, /etc/openssh/ssh_host_dsa_key.pub, /etc/openssh/ssh_host_rsa_key.pub
Эти три файла содержат публичную часть ключей машины. Эти файлы должны быть открыты для чтения всем, но на запись только суперпользователю. Их содержимое должно соотноситься с приватной частью. Эти файлы в действительности ни для чего не используются; они предназначены только для удобства пользователя, так что их содержимое может быть скопировано в файлы известных машин. Эти группы файлов создаются с использованием ssh-keygen(1). /etc/openssh/primes Содержит группы Диффи-Хеллмана, используемые для "Diffie-Hellman Group Exchange". /var/run/sshd.pid Содержит идентификатор процесса sshd ожидающего соединения (если имеются несколько демонов запущенных одновременно для разных портов, то содержит идентификатор процесса для стартовавшего последним). Содержимое этого файла не критично; он может быть открыт на запись для всех. $HOME/.ssh/authorized_keys Описывает ключи RSA которые могут быть использованы для регистрации пользователя. Этот файл должен быть доступен для чтения суперпользователю (что может на некоторых машинах подразумевать доступ для чтения всем, если домашний каталог пользователя расположен на NFS). Рекомендуется чтобы был он недоступен для остальных. Формат этого файла описан выше. Пользователь должен поместить содержимое своего файла identity.pub внутрь этого файла, как описано в ssh-keygen(1). $HOME/.ssh/authorized_keys2 Описывает публичные ключи (RSA или DSA) которые могут быть использованы для регистрации пользователя. Этот файл должен быть доступен для чтения суперпользователю (что может на некоторых машинах подразумевать доступ для чтения всем, если домашний каталог пользователя расположен на NFS). Рекомендуется чтобы он был недоступен для остальных. Формат этого файла описан выше. Пользователь должен поместить содержимое своих файлов id_dsa.pub и/или id_dsa.pub внутрь этого файла, как описано в ssh-keygen(1). "/etc/openssh/ssh_known_hosts" и "$HOME/.ssh/known_hosts" Эти файлы просматриваются когда используется rhosts с RSA аутентификацией машин для проверки публичного ключа машины. Ключ, для того, чтобы он был акцептирован, должен быть описан в одном из этих файлов. Клиент использует те же самые файлы для сверки, что удаленная машина та самая, которая подразумевается для связи. Эти файлы должны быть доступны для записи только суперпользователю/владельцу. /etc/openssh/ssh_known_hosts должен быть доступен для чтения всем, $HOME/.ssh/known_hosts также может, но не обязательно. "/etc/openssh/ssh_known_hosts2" и "$HOME/.ssh/known_hosts2" Эти файлы просматриваются когда используется при аутентификации машин с использованием протокола версии 2 для проверки публичного ключа машины. Ключ, для того, чтобы он был акцептирован, должен быть описан в одном из этих файлов. Клиент использует те же самые файлы для сверки, что удаленная машина та самая, которая подразумевается для связи. Эти файлы должны быть доступны для записи только суперпользователю/владельцу. /etc/openssh/ssh_known_hosts2 должен быть доступен для чтения всем, $HOME/.ssh/known_hosts2 также может, но не обязательно. /etc/nologin Если имеется этот файл sshd отвергнет попытки соединения для любого пользователя, за исключением суперпользователя. Любому кто пытается зарегистрироваться, будет показано содержимое этого файла и соединения не суперпользователя будут отвергнуты. Этот файл дожен быть доступен для чтения всем. /etc/hosts.allow, /etc/hosts.deny Если скомпилирован с поддержкой LIBWRAP, здесь может быть определен контроль доступа tcp-оболочек как описано в hosts_access(5). $HOME/.rhosts Этот файл содержит пары, машина - имя пользователя, разделенные пробелом, по одной на строку. Заданному пользователю на соответствующей машине разрешена регистрация в системе без пароля. Этот же файл используется для rlogind и rshd. Файл должен быть доступен для записи только пользователю; рекомендуется, чтобы он был недоступен для остальных. Также возможно использование в этом файле сетевых групп. Либо имя машины, либо имя пользователя могут быть в формате +@имя_группы для указания всех машин или всех пользователей в группе. $HOME/.shosts Этот файл для ssh аналогичен файлу .rhosts. Однако этот файл не используется для rlogin и rshd, так что его использование допустимо только с SSH. /etc/hosts.equiv Этот файл используется в процессе аутентификации .rhosts. В самой простой форме этот файл содержит имена машин, по одному на строку. Пользователям на этих машинах разрешается регистрация в системе без указания пароля с использованием одного имени пользователя на обоих машинах. Имя машины так же может следовать за именем пользователя; так пользователям будет разрешена регистрация в системе от имени любого пользователя на этой машине (за исключением суперпользователя). Дополнительно, синтаксис ``+@group'' может быть использован для указания сетевых групп. Отрицаются записи, начинающиеся с `-'. Если в этом файле найдено соответствие клиента машина/пользователь, то автоматически разрешается регистрация в системе при использовании единого имени пользователя на клиенте и сервере. В добавок, обычно требуется успешная RSA аутентификация. Этот файл дожен быть доступен для записи только суперпользователю; рекомендуется, чтобы он был доступен всем для чтения. Предупреждение: Использование имен пользователей в hosts.equiv всегда является плохой идеей. Остерегайтесь этого, так как это означает, что пользователь может зарегистрироваться в системе под любым именем, включая bin, daemon, adm, и бюджеты других пользователей владеющих важными файлами и каталогами. Использование имени пользователя практически гарантирует пользователю права суперпользователя. Единственное допустимое использование имен пользователей, я думаю, находится в отрицании записей. Имейте в виду, что это предупреждение также относится к rsh/rlogin. /etc/openssh/shosts.equiv Он обрабатывается аналогично /etc/hosts.equiv. Однако, этот файл может быть полезен в среде, где имеется желание выполнять и rsh/rlogin и ssh. $HOME/.ssh/environment Этот файл (при его наличии) считывается в окружение при регистрации в системе. Он может содержать только пустые строки, строки комментария (те, которые начинаются с `#') и стоки назначения форм имя=значение. Правом на запись этого файла должен обладать только пользователь; при необходимости не должен быть читаем для остальных. $HOME/.ssh/rc При наличии, этот файл будет выполнен после считывания файлов окружения, но перед запуском оболочки пользователя или команды. Если используется подмена Х11, то на его стандартный ввод будет получена пара "proto cookie" (и DISPLAY в окружение). В этом случае он должен вызываться xauth(1). Первичная цель этого файла состоит в том, чтобы выполнить любые подпрограммы инициализации, которые могут быть необходимы прежде, чем станет доступным основной каталог пользователя; AFS - специфический пример такой среды. Этот файл будет вероятно содержать некоторый код инициализации похожий на что нибудь типа: if read proto cookie; then
echo add $DISPLAY $proto $cookie | xauth -q -;
fi
Если этот файл отсутствует, то выполняется /etc/openssh/sshrc, если отсутствует и он, то для хранения cookie используется xauth. Этот файл должен быть доступен для записи пользователю и не должен быть читаем для остальных. /etc/openssh/sshrc Подобен $HOME/.ssh/rc. Может быть использован для определения машино-зависимых глобальных инициализаций во время регистрации в системе. Этот файл должен быть доступен для записи только суперпользователю, а доступен для чтения остальным. OpenSSH является производной из оригинальной и свободной версии ssh 1.2.12 от Tatu Ylonen.
Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt и Dug Song удалили много ошибок, добавили обновленные возможности и создали OpenSSH.
Markus Friedl внес вклад в виде поддержки для протокола SSH версий 1.5 и 2.0.
Александр Блохин - перевод на русский язык.
T. Ylonen, T. Kivinen, M. Saarinen, T. Rinne, and S. Lehtinen, SSH Protocol Architecture, draft-ietf-secsh-architecture-07.txt, January 2001, work in progress material. M. Friedl, N. Provos, and W. A. Simpson, Diffie-Hellman Group Exchange for the SSH Transport Layer Protocol, draft-ietf-secsh-dh-group-exchange-00.txt, January 2001, work in progress material.