ssh (SSH клиент) - это программа для регистрации на удаленной машине и выполнения на ней команд. Она предназначена для замены rlogin и rsh и осуществления безопасного шифрованного соединения между двумя независимыми компьютерами через незащищенную сеть. Подключения Х11 и произвольные ТСР/IP порты также могут быть перенаправлены через защищенный канал.
ssh подключается и регистрируется к указанному имени_машины. Пользователь должен доказать свою подлинность удаленной машине одним из нескольких способов в зависимости от используемой версии протокола:
Протокол SSH версии 1
Первый метод, если машина, с которой пользователь осуществил вход, указана в файле /etc/hosts.equiv или /etc/openssh/shosts.equiv на удаленной машине и имя пользователя одинаково на обоих сторонах, пользователю будет немедленно разрешен вход в систему.
Второй метод, если в домашнем каталоге пользователя на удаленной машине имеются файлы .rhosts или .shosts и содержат строки содержащие имя машины-клиента и имя пользователя на этой машине, то пользователю будет разрешен вход в систему. Этот способ аутентификации как единственный обычно не разрешен сервером, так как он не безопасен.
Второй метод аутентификации является rhosts или hosts.equiv методом, комбинированным с основанной на RSA аутентификацией машины. Это значит, что если бы был разрешен вход в систему в $HOME/.rhosts, $HOME/.shosts, /etc/hosts.equiv или /etc/openssh/shosts.equiv и дополнительно сервер мог проверить ключ машины клиента (смотри /etc/openssh/ssh_known_hosts и $HOME/.ssh/known_hosts в секции ФАЙЛЫ), то только тогда был бы разрешен вход в систему. Этот метод аутентификации прикрывает прорехи в защите от подмены IP, подмены DNS и подмены маршрута. [Вниманию системного администратора: /etc/hosts.equiv, $HOME/.rhosts и протокол rlogin/rsh в целом изначально небезопасны и должны быть отключены, если вы желаете безопасности.]
Как третий способ аутентификации ssh поддерживает аутентификацию основанную на RSA. Схема основана на криптографии публичного ключа: существуют криптосистемы где шифрование и расшифровка производятся с использованием различных ключей и определить ключ расшифровки, отталкиваясь от ключа для шифровывания, не представляется возможным. Одной из таких систем является RSA. Идея состоит в том, что каждый пользователь для аутентификации создает публичную/приватную пару ключей. Серверу известен публичный ключ и только пользователю известен приватный ключ. Файл $HOME/.ssh/authorized_keys перечисляет публичные ключи которым разрешена регистрация в системе. Когда пользователь регистрируется в системе, программа ssh сообщает серверу какую ключевую пару он должен использовать для аутентификации. Сервер проверяет, является ли ключ разрешенным, и, если это так, посылает пользователю (фактически программа ssh выполняется от имени пользователя) запрос - случайное число, зашифрованное публичным ключем пользователя. Запрос может быть расшифрован только с помощью правильного приватного ключа. Пользовательский клиент затем расшифровывает запрос используя приватный ключ, тем самым доказывая серверу знание приватного ключа без его раскрытия серверу.
ssh реализует протокол аутентификации RSA автоматически. Пользователь создает свою пару RSA ключей при помощи ssh-keygen(1). Он сохраняет приватный ключ в $HOME/.ssh/identity и публичный ключ в $HOME/.ssh/identity.pub в домашнем каталоге пользователя. Пользователь затем должен скопировать identity.pub в $HOME/.ssh/authorized_keys в своем домашнем каталоге на удаленной машине. (файл authorized_keys соответствует обычному файлу $HOME/.rhosts и имеет по одному ключу на каждую строку, хотя строки могут быть очень длинными). После этого пользователь может зарегистрироваться в системе без указания пароля. Аутентификация RSA гораздо более безопасна, чем аутентификация rhosts.
Наиболее удобным способом для использования может быть RSA аутентификация с агентом аутентификации. Для дополнительной информации смотри ssh-agent(1).
Если другие способы аутентификации закончились неудачно, ssh предложит пользователю указать пароль. Пароль будет послан на удаленную машину для проверки; однако, так как вся связь шифруется, пароль не может быть подсмотрен кем-нибудь подслушивающим в сети.
Протокол SSH версии 2
Когда пользователь связывается с использованием протокола версии 2, то доступны различные способы аутентификации:
Используя для PreferredAuthentications значения по умолчанию, клиент сначала пробует аутентифицировать себя при помощи метода открытого ключа; если этот способ потерпит неудачу, то будет предпринята аутентификация при помощи пароля и наконец, если этот метод терпит неудачу, то будет предпринята попытка интерактивной аутентификации с вводом данных с клавиатуры. Если и этот метод постигнет неудача, то будет предпринята аутентификация с паролем.
Метод публичного ключа похож на RSA аутентификацию, описанную в предыдущей секции и позволяет использовать DSA или RSA алгоритм. Клиент использует приватный ключ $HOME/.ssh/id_dsa для подписи идентификатора сеанса и посылает результат серверу. Сервер проверяет, соответствует или нет публичный ключ указанному в $HOME/.ssh/authorized_keys2, и предоставляет доступ в случае, если ключ и подпись соответствуют. Идентификатор сеанса берется из общего значения Diffie-Hellman и известен только клиенту и серверу.
Если аутентификация с публичным ключом окончилась неудачей или не доступна, на удаленную машину может быть послан зашифрованный пароль для доказательства подлинности пользователя.
Дополнительно ssh поддерживает по-машинную аутентификацию или по-запросу.
Протокол 2 обеспечивает дополнительные механизмы для конфиденциальности (сетевой трафик шифруется с использованием 3DES, Blowfish, CAST128 или Arcfour) и целостности (hmac-sha1, hmac-md5). Обратите внимание, что протокол 1 имет недостаточно сильный механизм обеспечения целостности подключения.
Сеанс входа в систему и удаленного выполнения
Если идентификация пользователя принята сервером, то сервер либо выполняет указанную команду, либо регистрирует пользователя в машине и дает ему нормальную оболочку на удаленной машине. Вся связь с удаленной командой или оболочкой будет автоматически зашифрована.
Если был назначен псевдо-терминал (нормальный сеанс регистрации в системе), то пользователь может использовать управляющие последовательности, описываемые ниже.
Если псевдо-терминал не был назначен, сеанс прозрачен и может быть использован для передачи бинарных файлов. На большинстве систем установка управляющих символов в значение "none" сделает сеанс прозрачным, даже если используется терминал.
Сеанс прерывается, когда команда или оболочка на удаленной машине завершает работу и все Х11 и TCP/IP соединения завершены. Статус выхода удаленной программы возвращается как статус выхода ssh.
Управляющие Последовательности
Если был запрошен псевдо-терминал, то ssh предоставляет возможность использования некоторых функции при помощи управляющих последовательностей.
Одинарный символ тильды может быть послан как ~~ (или вслед за другим символом, отличным от символов описанных выше). Управляющий символ должен всегда быть указан с новой строки, чтобы он был интерпретирован как специальный. Управляющие символы могут быть изменены при помощи конфигурационной директивы EscapeChar или в командной строке при указании параметра -e.
Поддерживаются следующие последовательности (по умолчанию подразумевается `~'):
~.Отключиться
~^Zssh в фоновом режиме
~#Список перенаправленные соединения
~&ssh ожидающий завершения в фоновом режиме перенаправленное соединение/сессию Х11 (только для протокола версии 1)
~?Распечатать список управляющих последовательностей
~RЗапросить переподключение (полезно только для протокола SSH версии 2 и если другая сторона это поддерживает
Перенаправление X11 и TCP
Если пользователь использует Х11 (установлена переменная окружения DISPLAY), то подключение к дисплею Х11 будет автоматически перенаправлено удаленной стороне таким образом, что любая Х11-программа запущенная из оболочки (или команды) пройдет через зашифрованный канал и соединение с настоящим сервером Х будет сделано с локальной машины. Пользователь не должен вручную устанавливать DISPLAY. Пересылка соединений X11 может быть сконфигурирована из командной строки или в файлах конфигурации.
Значение DISPLAY установленное для ssh будет указывать на машину-сервер, но с номером дисплея большим чем ноль. Это нормально и происходит потому, что ssh создает "proxy" Х-сервер на машине-сервере для пересылки соединений через зашифрованный канал.
ssh также автоматически настроит данные Xauthority на машине-сервере. Для этой цели он создаст случайные "cookie" авторизации, сохранит их с Xauthority на сервере и проверит, чтобы любое перенаправленное соединение передавало это "cookie" и подменяло его, когда установлено реальное соединение. Настоящий аутентификационный "cookie" никогда не будет послан на серверную машину (и не отправит открытые "cookie").
Если пользователь использует агента аутентификации, подключение к агенту автоматически перенаправляется удаленной стороне, если не заблокировано в командной строке или файле конфигурации.
Пересылка произвольных TCP/IP соединений через защищенный канал, может быть указана либо в командной строке, либо в файле конфигурации. Одна из возможных программ перенаправления TCP/IP - это защищенное соединение с электронным кошельком; другое, это хождение через брандмауэр.
Аутентификация сервера
ssh автоматически обслуживает и проверяет базу данных содержащую идентификацию для всех машин, которые когда-либо были использованы. RSA-ключи машины хранятся в $HOME/.ssh/known_hosts. Ключи машин используемые с протоколом 2-й версии хранятся в $HOME/.ssh/known_hosts2 в домашнем каталоге пользователя. В добавок, файлы /etc/openssh/ssh_known_hosts и /etc/openssh/ssh_known_hosts2 для известных машин проверяются автоматически. Любая новая машина будет автоматически добавлена в пользовательский файл. Если идентификация машины изменилась, то ssh предупредит об этом и отключит аутентификацию с паролем во избежание получения троянским конем пароля пользователя. Другое предназначение этого механизма состоит в том, чтобы предотвратить нападения по принципу man-in-the-middle, которые могут быть предприняты чтобы обойти шифрование. Параметр StrictHostKeyChecking (см. ниже) может быть использован для предотвращения входа в систему на машинах, чьи ключи не известны или изменены.
ПАРАМЕТРЫ
Используемые параметры:
-a
Отключает перенаправление соединения агента аутентификации.
-A
Включает перенаправление соединения агента аутентификации. Это может быть также указано на по-машинной основе в файле конфигурации.
-cblowfish|3des
Выбор пароля для шифрования сеанса. 3des (тройной-des) это кортеж вида encrypt-decrypt-encrypt с тремя различными ключами. Подразумевается, что это более безопасно, чем пароль des более не поддерживаемый в ssh. blowfish это быстрый блочный шифр, это кажется безопаснее и намного быстрее чем 3des. blowfish используется по умолчанию.
-ccipher_spec
Дополнительно, для протокола версии 2, может быть указан через запятую список шифров в порядке их предпочтения. Для получения дополнительной информации смотри Ciphers.
-ech|^ch|none
Устанавливает управляющие символы для сеансов с псевдо-терминалом (по умолчанию: ``~''). Управляющие символы распознаются только в начале строки. Управляющий символ следующий за точкой (``.'') завершит соединение, следующий за control-Z приостановит соединение и следующий сам за собой означает один управляющий символ. Установка символа в значение ``none'' отключает любые управляющие символы и делает сеанс полностью прозрачным.
-f
Запросит ssh перейти в фоновый режим только перед выполнением команды. Это полезно если ssh собирается запросить пароль или парольную фразу, но пользователь хочет сделать это в фоновом режиме. Это реализовано при помощи -n. Рекомендуемый способ для запуска программ Х11 с удаленного компьютера это что-нибудь типа ssh -f host xterm.
-g
Позволяет удаленным машинам обращаться к локальным перенаправленным портам.
-iфайл_идентификации
Указывает файл из которого считывается идентификация (приватный ключ) для
RSA или DSA аутентификации. По умолчанию это $HOME/.ssh/identity в домашнем каталоге пользователя. Файлы идентификации так-же могут быть указаны на по-машинной основе в файле конфигурации. Это позволяет иметь подряд несколько параметров -i (и указывать в конфигурационном файле несколько идентификаторов).
-k
Отключает пересылку Kerberos tickets и AFS лексем. Это может быть также указано на по-машинной основе в файле конфигурации.
-lимя_регистрации
Указывает имя регистрации пользователя в системе, используемое для подключения к удаленной машине. Это может быть также указано на по-машинной основе в файле конфигурации.
-mmac_spec
Дополнительно, для протокола версии 2 может быть указан разделенный через запятую список MAC (код подлинности сообщения) алгоритмов в порядке предпочтения. Для дополнительной информации ищи по ключевому слову MAC.
-n
Перенаправляет стандартный ввод из /dev/null (фактически, предотвращает чтение из стандартного ввода). Это должно использоваться когда ssh выполняется в фоновом режиме. Типичный трюк используемый для запуска Х11 программ на удаленной машине. Например, ssh -n shadows.cs.hut.fi emacs & запустит emacs на shadows.cs.hut.fi , и соединение X11 будет автоматически перенаправлено через зашифрованный канал. Программа ssh будет переведена в фоновый режим. (Это не работает, если ssh нужен запрос пароля или парольной фразы; также смотри параметр -f.)
-N
Не выполнять удаленную команду. Это полезно если вы хотите только перенаправить порты (только протокол версии 2).
-oпараметр
Может быть использован для задания параметров в формате используемом в файле конфигурации. Это полезно для указания параметров не имеющих отдельного флага командной строки. Параметр имеет тот же формат как и строка в файле конфигурации.
-pпорт
Порт для связи с удаленной машиной. Это может быть указано на по-машинной основе в файле конфигурации.
-P
Использовать не привилегированные порты для исходящих соединений. Это может быть использовано, если ваш брандмауэр не позволяет осуществлять соединения с привилегированных портов. Имейте в виду, что этот параметр отключает RhostsAuthentication и RhostsRSAAuthentication для старых серверов.
-q
Тихий режим. Подавляет все предупреждения и диагностические сообщения. Будут отображены только фатальные ошибки.
-s
Может быть использован для запроса вызова подсистемы на удаленной системе. Подсистема это особенность протокола SSH2, которая облегчает использование SSH как безопасный транспорт для другой программы (например, sftp). Подсистема определена как удаленная команда.
-t
Переназначение псевдо-терминала. Это может быть использовано для произвольного выполнения программ базирующихся на выводе изображения на удаленной машине, что может быть очень полезно, например, при реализации возможностей меню. Несколько параметров -t заданных подряд переназначат терминал, даже если ssh не имеет локального терминала.
-T
Отменить переназначение терминала.
-v
Режим отладки. Принудит ssh вывести отладочную информацию о его деятельности. Это полезно для отладки проблем соединения, аутентификации и конфигурации. Параметр -v, указанный несколько раз подряд, сделает ssh более многословным. Максимальное количество 3.
-x
Отключает перенаправление Х11.
-X
Включает перенаправление Х11. Это также может быть указано по-машинно в файле конфигурации.
-C
Включит сжатие всех данных (включая stdin, stdout, stderr и данные для перенаправленных Х11 и TCP/IP соединений). Используется тот же самый алгоритм сжатия как и для gzip(1) и уровень сжатия может быть указан при помощи параметра CompressionLevel (см. ниже). Сжатие желательно на модемных линиях и других медленных соединениях, но лишь замедлит работу в быстрых сетях. Значение по умолчанию может быть установлено в файлах конфигурации по принципу "машина-за-машиной"; смотри ниже параметр Compress.
-Lпорт:машина:порт_машины
Определяет заданный порт на локальной (клиентской) машине который будет перенаправлен к заданной машине и порт на удаленной машине. Это реализовано путём назначения доменного подключения "прослушиваемому" порту на стороне локальной машины и всякий раз, когда производится соединение на этот порт, оно будет перенаправлено через защищенный канал и произведено соединение к портупорт_машины удаленной машины. Перенаправление портов моет быть так же указано в файле конфигурации. Только суперпользователь может осуществлять перенаправление привилегированных портов. Адреса IPv6 могут быть указаны с альтернативным синтаксисом: port/host/hostport.
-Rпорт:машина:порт_машины
Указывает заданный порт на удаленной машине (сервере) который будет перенаправлен к заданной машине и локальному порту. Это реализовано путём назначения доменного подключения "прослушиваемому" порту со стороны удаленной машины и всякий раз, когда производится соединение на этот порт, оно будет перенаправлено через защищенный канал и произведено соединение к портупорт_машины локальной машины. Перенаправление портов моет быть так же указано в файле конфигурации. Только суперпользователь может осуществлять перенаправление привилегированных портов. Адреса IPv6 могут быть указаны с альтернативным синтаксисом: port/host/hostport.
-1
Принуждает ssh использовать только протокол версии 1.
-2
Принуждает ssh использовать только протокол версии 2.
-4
Принуждает ssh использовать только IPv4 адреса.
-6
Принуждает ssh использовать только IPv6 адреса.
ФАЙЛЫ КОНФИГУРАЦИИ
ssh получает данные о конфигурации из следующих источников (в таком порядке): параметры командной строки, пользовательский файл конфигурации $HOME/.ssh/config, системный файл конфигурации /etc/openssh/ssh_config. Для каждого параметра используется первое полученное значение. Конфигурационные файлы содержат разделы определяющие ``Host'' заключённые в кавычки. Эти разделы могут быть применены только к тем машинам, которые соответствуют одному из указанных в определении шаблонов. Соответствием является имя машины заданное в командной строке.
Так как для каждого параметра используется первое полученное значение, большинство машиннозависимых деклараций должно быть указано в начале файла, а общие значения по умолчанию - ближе к концу.
Файл конфигурации имеет следующий формат:
Пустые строки и строки начинающиеся с `#' считаются комментариями.
Другой случай, это строки имеющие формат ``аргументы ключевого_слова''. Возможные ключевые слова и их значения (имейте в виду, что файлы конфигурации чувствительны к регистру букв):
Host
Ограничивает следующие декларации (вплоть до следующего ключевого слова Host) только для той машины, которая соответствует шаблону, заданному после ключевого слова. ``*'' и ``?'' могут быть использованы как символы подстановки в шаблонах. Одинарный ``*'' может быть использован как шаблон чтобы обеспечить общие значения по умолчанию для всех компьютеров. `Host' это имя_машины задаваемое в качестве параметра в командной строке (т.е., имя не преобразуется в каноническое имя машины перед сопоставлением).
AFSTokenPassing
Определяет, будет ли передан AFS на удаленную машину. Параметром к этому ключевому слову должно быть ``yes'' или ``no''. Этот параметр применим только с протоколом версии 1.
BatchMode
Если установлено значение ``yes'', то запрос парольной фразы/пароля будет отключен. Этот параметр полезен в сценариях и других пакетных заданиях выполняемых без участия пользователя способного ввести пароль. Параметром является ``yes'' или ``no''. По умолчанию ``no''.
CheckHostIP
Если значение этого флага установлено в ``yes'', то ssh будет дополнительно проверять ip-адреса в файле known_hosts. Это позволит ssh обнаружить изменение ключа машины в случае подмены DNS. Если параметром является ``no'', то проверка не будет проведена. Значение по умолчанию ``yes''.
Cipher
Определяет пароль, используемый для шифрования сеанса, в протоколе версии 1. В настоящее время поддерживаются ``blowfish'' и ``3des''. По умолчанию используется ``blowfish''.
Ciphers
Определяет шифры допустимые для протокола версии 2 в порядке предпочтения. Чередующиеся шифры должны быть отделены друг от друга запятыми. По умолчанию стоит:
``blowfish-cbc,aes128-cbc,3des-cbc,cast128-cbc,arcfour,
aes192-cbc,aes256-cbc''
Compression
Определяет случаи использования сжатия. Параметром должно быть ``yes'' или ``no''. По умолчанию ``no''.
CompressionLevel
Определяет степень сжатия используемую если включено сжатие. Параметром должно быть целое число от 1 (быстрая) до 9 (наилучшая). По умолчанию используется 9 степень, что хорошо для большинства программ. Смысл значений такой же, как и у gzip(1). Имейте ввиду, что этот параметр применим только к протоколу версии 1.
ConnectionAttempts
Определяет количество попыток (по одной в секунду) выполнения задач перед выпадением в rsh или выходом. Параметром должно быть положительное число. Это полезно при использовании в сценариях, если соединение иногда прерывается. Количество попыток по умолчанию - 4.
EscapeChar
Назначает управляющий символ (по умолчанию это: `~'). Управляющий символ может быть также определен в командной строке. Параметром должен быть один символ, `^' следует за буквой, или ``none'', для полного отключения управляющего символа (делает соединение прозрачным для бинарных данных).
FallBackToRsh
Определяет, что если соединение через ssh не удалось в следствие неудачи подключения (то-есть sshd(8) на удаленной машине не запущено), вместо этого будет автоматически использовано rsh(1) (после соответствующего предупреждения о том, что сеанс не будет зашифрован). Параметром должно быть ``yes'' или ``no''. По умолчанию ``no''.
ForwardAgent
Определяет будет ли соединение с агентом аутентификации (если используется) перенаправлено на удаленную машину. Параметром должно быть ``yes'' или ``no''. По умолчанию стоит ``no''.
ForwardX11
Определяет, будет ли соединение Х11 автоматически перенаправлено через защищенный канал и установлен DISPLAY. Параметром должно быть ``yes'' или ``no''. По умолчанию стоит ``no''.
GatewayPorts
Определяет, будет ли удаленной машине позволено связываться с локальными перенаправленными портами. Параметром должно быть ``yes'' или ``no''. По умолчанию стоит ``no''.
GlobalKnownHostsFile
Определяет файл для использования с протоколом версии 1, используемый вместо /etc/openssh/ssh_known_hosts.
GlobalKnownHostsFile2
Определяет файл для использования с протоколом версии 2, используемый вместо /etc/openssh/ssh_known_hosts2.
HostbasedAutentification
Определяет случаи использования основанной на rhosts аутентификации совместно с аутентификацией публичным ключом. Параметрами является ``yes'' или ``no''. По умолчанию ``no''. Этот параметр применим только к протоколу версии 2 и схож с RhostsRSAAuthentication.
HostKeyAlgorithms
Определяет алгоритмы ключей машины для протокола 2 которые желательно использовать клиенту в порядке предпочтения. По умолчанию стоит ``ssh-rsa,ssh-dss''.
HostKeyAlias
Определяет псевдоним, который должен быть использован вместо реального имени машины при поиске или сохранении ключа машины в файлах содержащих базы данных ключей машин. Этот параметр полезен для туннелирования соединений ssh или если вы имеете несколько серверов запущенных на одной машине.
HostName
Определяет реальное имя машины для регистрации на ней. Это может быть использовано для назначения коротких имен или аббревиатуры для машин. Именем по умолчанию является имя заданное в командной строке. Также, допустим числовой ip-адрес (как в командной строке, так и определении HostName).
IdentityFile
Определяет файл, из которого будет считана идентификация RSA или DSA аутентификация пользователя (по умолчанию это $HOME/.ssh/identity в домашнем каталоге пользователя). Дополнительно для аутентификации может быть использована любая идентификация предоставленная агентом аутентификации. Имя файла может содержать символ тильды для обращения к домашнему каталогу пользователя. Это позволяет иметь в файлах конфигурации указания на несколько файлов идентификации; все эти идентификации будут испробованы по очереди.
KeepAlive
Определяет должна ли система посылать сообщения подтверждающие активность соединения другой стороне. Если сообщение послано, то выключение или разрыв соединения одной из машин будет вовремя замечено. Однако, некоторые люди найдут это раздражающим, так как временная потеря маршрутизации вызовет разрыв соединения.
По умолчанию установлено в ``yes'' (для отправки сообщений) и клиент будет уведомлен, если сеть не функционирует или удаленная машина не отвечает. Это важно в сценариях и для многих пользователей.
Для отключения этого вы должны установить значение в ``no'' в файлах конфигурации клиента и сервера.
TransmitInterlude
Определяет максимальное допустимое время между передачей пакетов в секундах. Если это время прошло и клиент не передал данных, то на сервер будет отправлен игнорирующий пакет. Один пример того, где это полезно, это когда используется ssh из-за межсетевого экрана через Linux ip_masquerade. Если пакеты не будут периодически отправлены через межсетевой экран, то брандмауэр может позабыть о соединении. Когда пакет наконец послан, брандмауэр назначит новый порт, что заставит удаленный сервер прервать соединение. По умолчанию этот параметр установлен в ``0'', что не принуждает посылать периодические пакеты. Установка нескольких сотен секунд, по необходимости, должна себя оправдать. Ранее вы должны попытаться установить KeepAlive в ваших файлах конфигурации на сервере и на клиенте в ``yes''.
KerberosAuthentication
Определяет, когда будет использована аутентификация Kerberos. Параметром для этого ключевого слова должно быть ``yes'' или ``no''.
KerberosTgtPassing
Определяет, будет ли Kerberos TGT перенаправлен серверу. Это работает только в том случае, если сервер Kerberos - фактически AFS kaserver. Параметром для этого ключевого слова должно быть ``yes'' или ``no''.
LocalForward
Определяет, что TCP/IP порт на локальной машине будет перенаправлен через защищенный канал к заданным с удаленной машины машина:порт. Первым параметром должен быть номер порта, а вторым машина:порт. Так же могут быть указаны множественные перенаправления, и дополнительные - в командной строке. Только суперпользователь может перенаправлять привилегированные порты.
LogLevel
Назначает уровень отладки, используемый при журналировании сообщений ssh. Допустимыми будут следующие значения: QUIET, FATAL, ERROR, INFO, VERBOSE и DEBUG. По умолчанию используется INFO.
MACs
Определяет алгоритм MAC (код подлинности сообщения) в порядке предпочтения. Алгоритм для защиты целостности данных MAC использует протокол версии 2. Множественные алгоритмы должны быть разделены через запятую. Значение по умолчанию:
``hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@openssh.com,
hmac-sha1-96,hmac-md5-96''
NumberOfPasswordPrompts
Определяет число приглашений для ввода пароля перед отказом в доступе. Параметр этого ключевого слова должен быть целым положительным числом. По умолчанию это 3.
PasswordAuthentication
Определяет, будет ли использоваться аутентификация паролем. Параметром этого ключевого слова должно быть ``yes'' или ``no''. По умолчанию используется ``yes''.
Port
Определяет номер порта для подключения к удаленной машине. По умолчанию 22.
PreferredAuthentifications
Определяет порядок перебора методов аутентификации протокола версии 2, который будет использован клиентом. Это позволит клиенту отдать предпочтение тому (например, keyboard-interactive) или иному (например, password) методу. По умолчанию используется: ``publickey, password, keyboard-interactive''.
Protocol
Определяет, в какой последовательности ssh должен поддерживать версии протокола. Вероятные значения ``1'' и ``2''. Множество версий должно быть указано через запятую. По умолчанию ``2,1''. Это означает, что ssh сначала попробует протокол версии 2 и в случае неудачи обратится к версии 1.
ProxyCommand
Определяет команду используемую для связи с сервером. Строка команды простирается до конца строки и выполняется /bin/sh. В командной строке `%h' будет заменено именем машины для соединения и `%p' будет заменено на порт. В целом, команда может быть любой, может считываться из стандартного ввода и писать в свой стандартный вывод. Это должно, в конечном счете, соединиться с сервером sshd(8), запущенном на какой-то машине, или выполнить где-то sshd -i. Обслуживание ключа машины будет выполнено с использованием HostName компьютера, к которому производится подключение (в соответствии с указанным пользователем именем). Имейте в виду, что CheckHostIP недоступно при соединении при помощи ProxyCommand.
PubkeyAuthentication
Определяет, пробовать ли аутентификацию публичным ключем. Параметром для этого ключевого слова должно быть ``yes'' или ``no''. По умолчанию это ``yes''. Имейте в виду, что этот параметр применим только к протоколу версии 2.
RemoteForward
Определяет, что TCP/IP порт на удаленной машине будет перенаправлен через защищенный канал к указанным машина:порт с локальной машины. Первым параметром должен быть номер порта, вторым - машина:порт. Могут быть определены многочисленные перенаправления, и дополнительные могут быть указаны в командной строке. Только суперпользователь может перенаправлять привилегированные порты.
RhostsAuthentication
Определяет, пробовать ли по-машинную аутентификацию. Имейте в виду, что эта декларация оказывает влияние только на клиентской стороне и не оказывает никакого эффекта на защиту. Отключение rhosts-аутентификации может уменьшить время аутентификации при медленных соединениях. Большинство серверов не позволяют RhostsAuthentication, так как это небезопасно (смотри RhostsRSAAuthentication). Параметром к этому ключевому слову должно быть ``yes'' или ``no''. По умолчанию установлено ``yes''. Этот параметр применим только к протоколу версии 1.
RhostsRSAAuthentication
Определяет, пробовать ли rhosts-аутентификацию вместе с RSA-аутентификацией. Параметром должно быть ``yes'' или ``no''. По умолчанию ``yes''. Этот параметр применим только к протоколу версии 1.
RSAAuthentication
Определяет, пробовать ли RSA-аутентификацию. Параметром к этому ключевому слову должно быть ``yes'' или ``no''. RSA-аутентификация будет предпринята только, если присутствует файл идентификации или запущен аутентификационный агент. По умолчанию используется значение ``yes''. Обратите внимание, что этот параметр может быть использован только с протоколом версии 1.
ChallengeResponseAuthentication
Определяет, использовать ли установление подлинности ответа на вызов. В настоящее время есть поддержка только для аутентификации skey(1). Параметром к этому ключевому слову должно быть ``yes'' или ``no''. По умолчанию используется ``no''.
StrictHostKeyChecking
Если этот флаг установлен в ``yes'', то ssh не будет добавлять автоматически ключи машин в файлы $HOME/.ssh/known_hosts и $HOME/.ssh/known_hosts2, и откажется устанавливать связь с машинами, чьи ключи машин изменились. Это обеспечивает максимальную защиту против атак троянских коней. Однако, это может действовать несколько раздражающе, если вы не имеете правильно установленных файлов /etc/openssh/ssh_known_hosts и /etc/openssh/ssh_known_hosts2 и часто соединяетесь с новыми машинами. Этот параметр вынуждает пользователя вручную добавлять новые машины. Если этот флаг установлен в ``no'', ssh будет автоматически добавлять новые ключи машин к пользовательскому файлу известных машин. Если этот флаг установлен в ``no'', то ssh автоматически добавит новые ключи машин к пользовательскому файлу известных машин. Если этот флаг установлен в значение ``ask'', то новые ключи будут добавлены только после подтверждения пользователем, что он действительно хочет это сделать, и ssh откажет в соединении с машиной чей ключ изменился. Ключи машин в любом случае будут автоматически проверены. Параметр должен быть ``yes'', ``no'' или ``ask''. По умолчанию это ``ask''.
UsePrivilegedPort
Определяет, будет ли использован привилегированный порт для исходящих соединений. Параметр должен быть ``yes'' или ``no''. По умолчанию стоит ``no''. Имейте ввиду, что для использования RhostsAuthentication и RhostsRSAAuthentication со старыми серверами вы должны установить этот параметр в значение ``yes''.
User
Определяет регистрационное имя пользователя, используемое для регистрации в системе. Это может быть полезно, когда вы используете разные имена пользователей на разных машинах. Это предохранит от необходимости запоминать имя пользователя, указываемое в командной строке.
UserKnownHostsFile
Определяет файл, используемый как база данных с ключами машин с протоколом версии 1 вместо $HOME/.ssh/known_hosts.
UserKnownHostsFile2
Определяет файл, используемый как база данных с ключами машин с протоколом версии 2 вместо $HOME/.ssh/known_hosts2.
UseRsh
Указывает, что для этой машины должен быть использован rlogin/rsh. Возможно, что не все компьютеры поддерживают протокол ssh. Это заставит ssh немедленно выполнить rsh(1). Все остальные параметры при этом (за исключением HostName) будут проигнорированы. Параметром должно быть ``yes'' или ``no''.
XAuthLocation
Указывает расположение программы xauth(1). По умолчанию это /usr/X11R6/bin/xauth.
SshVersion
Указывает версию программного обеспечения, которая будет показана. По умолчанию это текущая версия, т.е. OpenSSH_2.9p2.
ПЕРЕМЕННЫЕ
ssh обычно устанавливает следующие переменные окружения:
DISPLAY
Переменная DISPLAY обозначает месторасположение сервера Х11. Это автоматически устанавливается для ssh, чтобы указать на значение формы ``hostname:n'', где hostname обозначает машину, где запущена эта оболочка, и n, это целое число >= 1. ssh использует это специальное значение для перенаправления соединений Х11 через защищенный канал. Пользователь обычно не должен явно устанавливать DISPLAY, так как это сделает соединение Х11 небезопасным (и от пользователя потребуется ручное копирование любых авторизационных cookies).
HOME
Устанавливает путь к домашнему каталогу пользователя.
LOGNAME
Синоним для USER; устанавливается для совместимости с системами, использующими эту переменную.
MAIL
Устанавливает указатель на почтовый ящик пользователя.
PATH
Устанавливает PATH по умолчанию, как определено при компиляции ssh.
SSH_AUTH_SOCK
Обозначает путь доменных подключений unix, используемых для соединения с агентом.
SSH_CLIENT
Идентифицирует пользовательскую сторону подключения. Эта переменная содержит три разделенных пробелом значения: ip-адрес клиента, номер порта клиента и номер порта сервера.
SSH_ORIGINAL_COMMAND
Переменная содержит оригинальную командную строку, если выполнена принудительная команда. Это может использоваться для восстановления первоначальных параметров.
SSH_TTY
Это устанавливает имя терминала (путь к устройству), ассоциированное с текущей оболочкой или командой. Если текущий сеанс не имеет терминала, то эта переменная не будет установлена.
TZ
Переменная временной зоны для установки настоящей временной зоны, если она была установлена при старте демона (т.е., демон передал значение на новое соединение).
USER
Устанавливает имя зарегистрированного в системе пользователя.
Дополнительно ssh считывает $HOME/.ssh/environment и добавляет к переменной строки формата ``VARNAME=value''.
ФАЙЛЫ
$HOME/.ssh/known_hosts, $HOME/.ssh/known_hosts2
Записывает ключи машин для всех компьютеров к которым подключался пользователь (которые не занесены в /etc/openssh/ssh_known_hosts для протокола версии 1 и в /etc/openssh/ssh_known_hosts2 для протокола версии 2). Смотри sshd(8).
Содержат идентификацию аутентификации пользователя. RSA для протокола версии 1, DSA для протокола версии 2 и RSA протокола версии 2 соответственно. Эти файлы содержат важные данные и должны быть открыты для чтения пользователем, но недоступны для остальных (чтение/запись/выполнение). Обратите внимание, что ssh игнорирует приватные ключи, если они доступны для других. Возможно указание парольной фразы при создании ключа; парольная фраза будет использована для шифрации важной части этого файла с использованием 3DES.
Содержат публичный ключ для аутентификации (публичную часть файла идентификации в читаемой форме). Содержимое $HOME/.ssh/identity.pub будет добавлено к $HOME/.ssh/authorized_keys на всех машинах, где вы желаете регистрироваться с использованием RSA-аутентификации по протоколу версии 1. Содержимое $HOME/.ssh/id_dsa.pub и $HOME/.ssh/id_dsa.pub будет добавлено к $HOME/.ssh/authorized_keys2 на всех машинах, где вы желаете регистрироваться с использованием RSA/DSA-аутентификации с использованием протокола версии 2. Эти файлы не чувствительны и могут (но не обязательно) быть доступны для чтения для всех. Эти файлы никогда не используются автоматически и не обязательны; они предусмотрены только для удобства пользователя.
$HOME/.ssh/config
Это файл пользовательской конфигурации. Формат этого файла описан ранее. Этот файл используется клиентом ssh. Этот файл обычно не содержит важной информации, но рекомендуемые права доступа - чтение/запись для пользователя и недоступно для остальных.
$HOME/.ssh/authorized_keys
Список RSA-ключей, которые могут быть использованы для регистрации для данного пользователя. Формат этих файлов описан в руководстве пользователя sshd(8). В двух словах формат тот же самый, что и в файлах идентификации .pub (так и есть, каждая строка содержит число битов в модуле, публичный тип, модуль и поля комментариев разделенные через запятую). Этот файл не очень важен, но рекомендуемые права доступа - чтение/запись для пользователя и недоступно для остальных.
$HOME/.ssh/authorized_keys2
Список публичных ключей (DSA/RSA), которые могут быть использованы для регистрации для данного пользователя. Этот файл не очень важен, но рекомендуемые права доступа - чтение/запись для пользователя и недоступно для остальных.
Системный список ключей известных машин. /etc/openssh/ssh_known_hosts содержит RSA и /etc/openssh/ssh_known_hosts2 содержит DSA или RSA ключи для протокола версии 2. Эти файлы должны быть подготовлены системным администратором и содержать ключи машин со всех компьютеров в организации. Этот файл должен быть читаемым для всех. Этот файл содержит публичные ключи, по одному в строке, в следующем формате (поля разделены пробелами): имя системы, число битов в модуле, публичный тип, модуль и поле дополнительного комментария. Когда для одной машины используются разные имена, они все должны быть перечислены через запятую. Формат описан в руководстве пользователя sshd(8).
Каноническое системное имя (возвращаемое серверами имен) используется sshd(8) для проверки клиентской машины во время регистрации; другие имена нужны потому, что ssh не преобразует имя указанное пользователем в каноническое перед проверкой ключа потому, что кто-то, имеющий доступ к серверам имен, тогда мог бы ввести в заблуждение аутентификацию машины.
/etc/openssh/ssh_config
Системный файл конфигурации. Этот файл предоставляет значения по умолчанию для тех значений, которые не указаны в пользовательском файле конфигурации, и для тех пользователей, которые не имеют файлов конфигурации. Этот файл должен быть доступен всем для чтения.
$HOME/.rhosts
Этот файл используется для аутентификации в .rhosts для описания пар машина/пользователь, которым позволена регистрация в системе. (Имейте ввиду, что этот файл также используется rlogin и rsh, что делает его использование небезопасным.) Каждая строка этого файла содержит имя машины (в канонической форме, возвращаемой серверами имен) и затем имя пользователя на этой машине, разделенные через запятую. На некоторых машинах этот файл должен быть доступен на чтение для всех, если домашний каталог пользователя находится на NFS партиции потому, что sshd(8) видит ее как корневую. Дополнительно, этот файл может принадлежать пользователю, и не должен предоставлять прав доступа на запись для кого-либо ещё. Рекомендуемые права доступа для большинства машин это чтение/запись для пользователя, и недоступно для остальных.
Учтите, что по умолчанию sshd(8) будет установлен так, что это потребует успешной RSA аутентификации машины, прежде чем будет разрешена аутентификация .rhosts. Если ваша серверная машина не имеет клиентского ключа машины в /etc/openssh/ssh_known_hosts, вы можете сохранить его в $HOME/.ssh/known_hosts. Простейший путь для того, чтобы сделать это, это подключиться обратно с сервера к клиентской машине с использованием ssh; это автоматически добавит ключ машины в $HOME/.ssh/known_hosts.
$HOME/.shosts
Этот файл используется точно таким же способом, как и .rhosts. Смысл наличия этого файла состоит в том, чтобы предоставить возможность использования rhosts аутентификации с ssh без предоставления прав регистрации в системе с rlogin(1) или rsh(1).
/etc/hosts.equiv
Этот файл используется в процессе аутентификации .rhosts. Он содержит канонические имена машин, по одному на каждую строку (полный формат описан в руководстве пользователя sshd(8)). Если клиентская машина найдена в этом файле, автоматически разрешается регистрация в системе с предоставлениемодно и тоже имя пользователя на машине-клиенте и сервере. Обычно дополнительно требуется успешная RSA-аутентификация. Этот файл должен быть доступен для записи только суперпользователю.
/etc/openssh/shosts.equiv
Этот файл обрабатывается в точности как /etc/hosts.equiv. Этот файл может быт полезен для разрешения регистрации в системе с использованием ssh, но без использования rsh/rlogin.
/etc/openssh/sshrc
Команды в этом файле выполняются ssh, когда пользователь только зарегистрировался в системе, перед запуском оболочки пользователя (или команды). Для дополнительной информации смотри руководство пользователя sshd(8).
$HOME/.ssh/rc
Команды в этом файле выполняются ssh, когда пользователь только зарегистрировался в системе, перед запуском оболочки пользователя (или команды). Для дополнительной информации смотри руководство пользователя sshd(8).
$HOME/.ssh/environment
Содержит дополнительные определения для переменных окружения. Смотри выше раздел ПЕРЕМЕННЫЕ.
АВТОРЫ
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.