ssh(1)
| SSH(1) | System Reference Manual | SSH(1) |
НАЗВАНИЕ
ssh - SSH-клиент защищенной оболочки OpenSSH (программа удаленного доступа)
СИНТАКСИС
ssh [-l login_name] [hostname |
user@hostname] [command]
ssh [-afgknqstvxACNTX1246] [-b bind_address]
[-c cipher_spec] [-e escape_char] [-i
identity_file] [-l login_name] [-m
mac_spec] [-o option] [-p port]
[-F configfile] [-L port:host:hostport]
[-R port:host:hostport] [-D port]
hostname | user@hostname [command]
ОПИСАНИЕ
ssh (SSH клиент) - это программа для регистрации и выполнения команд на удаленной машине. Она предназначена для замены rlogin и rsh и предоставляет безопасное шифрованное соединение между двумя независимыми компьютерами через незащищенную сеть. Соединения Х11 и произвольные ТСР/IP порты также могут быть перенаправлены через защищенный канал.
ssh подключается и регистрируется к указанному hostname (имени машины). Пользователь должен доказать свою идентичность удаленной машине одним из нескольких способов в зависимости от используемой версии протокола:
Протокол 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/id_rsa и отправляет результат серверу. Сервер проверяет, соответствует или нет публичный ключ указанному в $HOME/.ssh/authorized_keys, и в том случае, если ключ и подпись соответствуют, предоставляет доступ. Идентификатор сеанса берется из общего значения Diffie-Hellman и известен только клиенту и серверу.
Дополнительно, ssh поддерживает по-машинную аутентификацию или по методу запрос-ответ.
Протокол 2 обеспечивает дополнительные механизмы для конфиденциальности (сетевой трафик шифруется с использованием 3DES, Blowfish, CAST128 или Arcfour) и целостности (hmac-md5, hmac-sha1). Обратите внимание, что протокол версии 1 имеет недостаточно сильный механизм обеспечения целостности подключения.
Сеанс входа в систему и удаленного выполнения
Если идентификация пользователя принята сервером, то сервер либо выполняет указанную команду, либо регистрирует пользователя в системе и дает ему нормальную оболочку на удаленной машине. Вся связь с удаленной командой или оболочкой будет автоматически зашифрована.
Если был назначен псевдо-терминал (нормальный сеанс регистрации в системе), то пользователь может использовать управляющие последовательности, описываемые ниже.
Если псевдо-терминал не был назначен, сеанс прозрачен и может быть использован для передачи бинарных данных. На большинстве систем установка управляющих символов в значение "none" сделает сеанс прозрачным, даже если используется терминал.
Сеанс прерывается, когда команда или оболочка на удаленной машине завершает работу и все Х11 и TCP/IP соединения завершены. Статус выхода удаленной программы возвращается как статус выхода ssh.
Управляющие Последовательности
Если был запрошен псевдо-терминал, то ssh предоставляет возможность использования некоторых функции при помощи управляющих последовательностей.
Одинарный символ тильды может быть послан как ~~ или вслед за другим символом, отличным от символов описанных выше. Управляющий символ должен всегда быть указан с новой строки, чтобы он был интерпретирован как специальный. Управляющие символы могут быть изменены при помощи конфигурационной директивы EscapeChar или в командной строке при указании параметра -e.
Поддерживаются следующие последовательности (по умолчанию подразумевается `~'):
- ~.
- Отключиться
- ~^Z
- ssh в фоновом режиме
- ~#
- Отобразить перенаправленные соединения
- ~&
- Перевести ssh в фоновый режим в ожидании завершения перенаправленного соединения/сессии Х11
- ~?
- Отобразить список управляющих последовательностей
- ~C
- Вывести командную строку (целесообразно только для перенаправления портов с использованием опций -L и -R)
- ~R
- Запросить переподключение (имеет смысл только для протокола SSH версии 2 и если другая сторона это поддерживает)
Перенаправление X11 и TCP
Если для переменной ForwardX11 установлено значение "yes" (или смотри опции -X и -x, описываемые далее) и пользователь использует Х11 (установлена переменная окружения DISPLAY), то подключение к дисплею Х11 будет автоматически перенаправлено удаленной стороне таким образом, что любая Х11-программа запущенная из оболочки пользователя (или команды) пройдет через зашифрованный канал и соединение с настоящим сервером Х будет сделано с локальной машины. Пользователь не должен вручную устанавливать DISPLAY. Пересылка соединений X11 может быть сконфигурирована из командной строки или в файлах конфигурации.
Значение DISPLAY установленное для ssh будет указывать на машину-сервер, но с номером дисплея большим чем ноль. Это нормально и происходит потому, что ssh создает "proxy" Х-сервер на машине-сервере для пересылки соединений через зашифрованный канал.
ssh также автоматически настроит данные Xauthority на машине-сервере. Для этой цели он создаст случайные "cookie" авторизации, сохранит их в Xauthority на сервере и проверит, чтобы любое перенаправленное соединение передавало это "cookie" и подменяло его, когда установлено реальное соединение. Настоящий аутентификационный "cookie" никогда не будет послан на машину-сервер (и не отправит не зашифрованные "cookie").
Если значение переменной ForwardAgent установлено в "yes" (или смотри опции -A и -a, описываемые далее) и пользователь использует агента аутентификации, подключение к агенту автоматически перенаправляется удаленной стороне.
Перенаправление произвольных TCP/IP соединений через защищенный канал может быть указано либо в командной строке либо в файле конфигурации. Одна из возможных программ перенаправления TCP/IP - это защищенное соединение с электронным кошельком; другое, это связь через брандмауэр.
Аутентификация сервера
ssh автоматически обслуживает и проверяет базу данных содержащую идентификацию для всех машин, которые когда-либо были использованы. Ключи машин хранятся в $HOME/.ssh/known_hosts в домашнем каталоге пользователя. В добавок, файл /etc/openssh/ssh_known_hosts для известных машин проверяется автоматически. Любая новая машина будет автоматически добавлена в пользовательский файл. Если идентификация машины изменилась, то ssh предупредит об этом и отключит аутентификацию с паролем во избежание получения троянским конем пароля пользователя. Другое предназначение этого механизма состоит в том, чтобы предотвратить нападения по принципу man-in-the-middle, которые могут быть предприняты чтобы обойти шифрование. Опция StrictHostKeyChecking может быть использован для предотвращения входа в систему на машинах, чьи ключи не известны или изменены.
- Используемые опции:
- -a
- Отключает перенаправление соединения агента аутентификации.
- -A
- Включает перенаправление соединения агента аутентификации. Это может быть также указано на по-машинной основе в файле конфигурации.
- Перенаправление агента должно использоваться с большой предосторожностью. Пользователи, имеющие возможность обойти права доступа к файлам на удалённой машине (для доменных Unix-подключений агента), могут получить доступ к локальному агенту через перенаправленное соединение. Атакующий не может получить данные ключа от агента, однако он может воздействовать на ключ, что позволит аутентифицироваться используя идентификаторы уже загруженные в агента.
- -b bind_address
- Задаёт интерфейс для передачи с машин со множеством сетевых интерфейсов или адресных псевдонимов.
- -c blowfish|3des
- Выбор пароля для шифрования сеанса. blowfish используется по умолчанию. Это наиболее безопасно. 3des (тройной-des), это кортеж вида encrypt-decrypt-encrypt с тремя различными ключами. blowfish это быстрый блочный шифр, он выглядит безопаснее и намного быстрее чем 3des. des поддерживается только в ssh-клиенте для совместимости с реализацией протокола версии 1, который не поддерживает 3des-шифрование. Это крайне нежелательно в следствие слабой криптографии.
- -c cipher_spec
- Дополнительно, для протокола версии 2, список шифров может быть указан через запятую в порядке их предпочтения. Для получения дополнительной информации смотри Ciphers.
- -e ch|^ch|none
- Назначает управляющие символы для сеансов с псевдо-терминалом (по умолчанию: "~"). Управляющие символы распознаются только в начале строки. Управляющий символ следующий за точкой (".") завершит соединение, следующий за control-Z приостановит соединение, а будучи указанным дважды означает один управляющий символ. Установка значения символа равным "none" отключает любые управляющие символы и делает сеанс полностью прозрачным.
- -f
- Запросит ssh перейти в фоновый режим только перед выполнением команды. Это полезно если ssh собирается запросить пароль или парольную фразу, но пользователь хочет сделать это в фоновом режиме. Это подразумевает использование в сочетании с -n. Рекомендуемый способ для запуска программ Х11 с удаленного компьютера это что-нибудь типа ssh -f host xterm.
- -g
- Позволяет удаленным машинам обращаться к локальным перенаправленным портам.
- -i файл_идентификации
- Указывает файл из которого считывается идентификация (приватный ключ) для RSA или DSA аутентификации. По умолчанию это $HOME/.ssh/identity для протокола версии 1, а также $HOME/.ssh/id_rsa и $HOME/.ssh/id_dsa для протокола версии 2. Файлы идентификации также могут быть указаны на по-машинной основе в файле конфигурации. Это позволяет иметь множество параметров -i (и указывать в конфигурационном файле несколько идентификаторов).
- -I smartcard_device
- Указывает устройство для считывания smartcard. Аргументом является устройство, которое должен использовать ssh для связи со smartcard, используемой для хранения приватного RSA-ключа пользователя.
- -k
- Отключает пересылку билетов Kerberos и лексем AFS. Это может быть также указано на по-машинной основе в файле конфигурации.
- -l имя_регистрации
- Указывает имя регистрации пользователя в системе на удаленной машине. Это может быть также указано на по-машинной основе в файле конфигурации.
- -m mac_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 порт
- Порт для связи на удаленной машине. Это может быть указано в файле конфигурации на по-машинной основе.
- -q
- Тихий режим. Подавляет все предупреждения и отладочные сообщения.
- -s
- Может быть использован для вызова подсистемы на удаленной системе. Подсистема, это особенность протокола SSH2, которая облегчает использование SSH как безопасный транспорт для другой программы (например, sftp). Подсистема определена как удаленная команда.
- -t
- Принудительное переназначение псевдо-терминала. Это может быть использовано для произвольного выполнения программ на удаленной машине, требующих вывода изображения, что может быть очень полезно, например, при реализации возможностей меню. Несколько параметров -t заданных подряд переназначат терминал, даже если ssh не имеет локального терминала.
- -T
- Отменить переназначение терминала.
- -v
- Режим отладки. Вынудит ssh вывести отладочную информацию о происходящем. Это полезно для отладки соединения, аутентификации и конфигурации. Множественное указание параметра -v сделает ssh более многословным. Максимальное количество 3.
- -X
- Включает перенаправление Х11. Это также может быть указано по-машинно в файле конфигурации.
- Перенаправление X11 должно использоваться с предосторожностями. Пользователи, имеющие возможность обойти права доступа к файлам на удалённой машине (для пользовательской аутентификационной базы данных X), могут получить доступ к локальному дисплею X11 через перенаправленное соединение. Таким образом, атакующий может получить возможность выполнения таких действий, как, например, отслеживание вводимого ключа.
- По этой причине, перенаправление соединейний в X11 по умолчанию подвергается ограничениям со стороны расширения SECURITY (безопасность). За более подробной информацией обратитесь к опции -Y программы ssh и к директиве ForwardX11Trusted, описанной на странице руководства ssh_config(5).
- -x
- Отключает перенаправление Х11.
- -Y
- Включает доверенное перенаправление соединений X11. Перенаправленные таким образом соединения не подвергаются контролю со стороны расширения SECURITY (безопасность) протокола X11.
- -C
- Включает сжатие всех данных (включая stdin, stdout, stderr и данные для перенаправленных Х11 и TCP/IP соединений). Используется тот же самый алгоритм сжатия как и для gzip(1); для протокола версии 1 уровень сжатия может быть задан при помощи параметра CompressionLevel. Сжатие желательно на модемных линиях и других медленных соединениях, но лишь замедлит работу в быстрых сетях. Значение по умолчанию может быть установлено в файлах конфигурации по принципу "машина-за-машиной"; смотри параметр Compression.
- -F configfile
- Служит для указания альтернативного пользовательского файла конфигурации. Если в командной строке указан файл конфигурации, системный файл конфигурации (/etc/openssh/ssh_config) игнорируется. Пользовательский файл конфигурации по умолчанию $HOME/.ssh/config.
- -L port:host:hostport (порт:машина:порт_машины)
- Определяет порт на локальной (клиентской) машине который будет перенаправлен к заданной машине и порт на удаленной машине. Это реализовано путём назначения доменного подключения "прослушиваемому" порту на стороне локальной машины, и всякий раз, когда производится соединение на этот порт, оно будет перенаправлено через защищенный канал и произведено соединение между портом и портом порт_машины на удалённой стороне. Перенаправление портов моет быть так же указано в файле конфигурации. Только суперпользователь может осуществлять перенаправление привилегированных портов. Адреса IPv6 могут быть указаны с альтернативным синтаксисом: port/host/hostport.
- -R port:host:hostport (порт:машина:порт_машины)
- Назначает порт на удаленной машине (сервере) который будет перенаправлен к заданной машине и локальному порту. Это реализовано посредством назначения доменного подключения "прослушиваемому" порту на удаленной машине и всякий раз, когда производится соединение на этот порт, оно будет перенаправлено через защищенный канал и произведено соединение между портом и портом порт_машины на локальной машине. Перенаправление портов моет быть так же задано в файле конфигурации. Только суперпользователь может осуществлять перенаправление привилегированных портов. Адреса IPv6 могут быть указаны с альтернативным синтаксисом: port/host/hostport.
- -D port
- Назначает локальное "динамическое" перенаправление портов на программном уровне. Это работает посредством назначения доменного подключения прослушивающего port на локальной стороне; при установлении соединения с этим портом оно будет перенаправлено через защищённый канал и затем будет использован программный протокол для соединения с удалённой машины. В настоящее время поддерживается протокол SOCKS4 и ssh действует как сервер SOCKS4. Только суперпользователь может перенаправлять привилегированные порты. Динамическое перенаправление портов также может быть указано в конфигурационном файле.
- -1
- Принуждает ssh использовать только протокол версии 1.
- -2
- Принуждает ssh использовать только протокол версии 2.
- -4
- Принуждает ssh использовать только IPv4 адреса.
- -6
- Принуждает ssh использовать только IPv6 адреса.
ФАЙЛЫ КОНФИГУРАЦИИ
ssh может получать данные о настройках из пользовательского и из системного конфигурационных файлов. Формат файла и опции конфигурации описаны в ssh_config(5).
ПЕРЕМЕННЫЕ
ssh обычно устанавливает следующие переменные окружения:
- DISPLAY
- Переменная DISPLAY обозначает месторасположение сервера Х11. Она автоматически устанавливается для ssh, чтобы указать на значение вида "hostname:n", где hostname обозначает машину, на которой запущена оболочка, и n - целое число >= 1. ssh использует это специальное значение для перенаправления соединений Х11 через защищенный канал. Пользователь обычно не должен явно устанавливать DISPLAY, так как это сделает соединение Х11 небезопасным (и от пользователя потребуется ручное копирование любых авторизационных cookies).
- HOME
- Устанавливает путь к домашнему каталогу пользователя.
- LOGNAME
- Синоним для USER; устанавливается для совместимости с системами, использующими эту переменную.
- Устанавливает указатель на почтовый ящик пользователя.
- PATH
- Устанавливает PATH по умолчанию, как определено при компиляции ssh.
- SSH_ASKPASS
- Если для ssh требуется указание ключевой фразы, то она будет считана с текущего терминала, если он был запущен из терминала. Если ssh не имеет ассоциированного терминала, но значения переменных DISPLAY и SSH_ASKPASS установлены, то будет выполнена программа, заданная в SSH_ASKPASS и будет открыто окно X11 для ввода фразы-пароля. Это особенно полезно при вызове ssh из .Xsession или схожего сценария. (Имейте ввиду, что для того, чтобы это сработало на некоторых машинах, понадобится перенаправление ввода из /dev/null.)
- SSH_AUTH_SOCK
- Обозначает путь доменных подключений unix, используемых для соединения с агентом.
- SSH_CONNECTION
- Обозначает завершение соединения для клиента и сервера. Эта переменная содержит четыре, следующих через запятую, значения: ip-адрес клиента, номер порта клиента, ip-адрес сервера и номер порта сервера.
- SSH_ORIGINAL_COMMAND
- Переменная содержит оригинальную командную строку, если была выполнена принудительная команда. Может быть использована для извлечения оригинальных аргументов.
- SSH_TTY
- Назначает имя терминала (путь к устройству), ассоциированное с текущей оболочкой или командой. Если текущий сеанс не имеет терминала, то эта переменная не будет установлена.
- TZ
- Переменная временной зоны для установки текущей временной зоны, если она была установлена при старте демона (т.е., демон передал значение на новое соединение).
- USER
- Устанавливает имя зарегистрированного в системе пользователя.
Дополнительно ssh проверяет наличие файла $HOME/.ssh/environment и, если он существует и пользователю разрешено переназначение собственных переменных окружения, считывает и добавляет к переменной строки вида "VARNAME=value". Смотри опцию PermitUserEnvironment в sshd_config(5).
ФАЙЛЫ
- $HOME/.ssh/known_hosts
- Записывает ключи машин для всех компьютеров к которым подключался пользователь (которые не занесены в /etc/openssh/ssh_known_hosts. Смотри sshd(8).
- $HOME/.ssh/identity, $HOME/.ssh/id_dsa, $HOME/.ssh/id_rsa
- Содержат идентификаторы пользователя. Это RSA, для протокола версии 1, DSA, для протокола версии 2 и RSA, для протокола версии 2 соответственно. Эти файлы содержат важные данные и должны быть открыты для чтения пользователем, но недоступны для остальных (чтение/запись/выполнение). Обратите внимание, что ssh игнорирует приватные ключи, если они доступны для других. Возможно указание парольной фразы при создании ключа; парольная фраза будет использована для шифрации важной части этого файла с использованием 3DES.
- $HOME/.ssh/identity.pub, $HOME/.ssh/id_dsa.pub, $HOME/.ssh/id_dsa.pub
- Содержат публичные ключи для аутентификации (публичную часть файла идентификации в читаемом виде). Содержимое $HOME/.ssh/identity.pub будет добавлено к $HOME/.ssh/authorized_keys на всех машинах, где пользователь желает зарегистрироваться с использованием RSA-аутентификации протокола версии 1. Содержимое $HOME/.ssh/id_dsa.pub и $HOME/.ssh/id_rsa.pub будет добавлено к $HOME/.ssh/authorized_keys на всех машинах, где пользователь желает зарегистрироваться с использованием DSA/RSA-аутентификации протокола версии 2. Эти файлы не содержат секретных данных и могут (но не обязательно) быть доступны для чтения всем. Эти файлы никогда не используются автоматически и не обязательны; они предусмотрены только для удобства пользователя.
- $HOME/.ssh/config
- Это файл пользовательской конфигурации. Формат этого файла и опции конфигурации описаны в ssh_config(5).
- $HOME/.ssh/authorized_keys
- Содержит публичные (RSA/DSA) ключи, которые могут быть использованы для регистрации пользователя. Формат этого файла описан в руководстве пользователя sshd(8). В простейшем виде формат этого файла аналогичен файлам идентификации .pub. Этот файл не содержит секретных данных, но желательными являются следующие права доступа: запись/чтение для владельца и отказ в доступе для остальных пользователей.
- /etc/openssh/ssh_known_hosts
- Общесистемный список ключей для известных машин. Этот файл должен создаваться системным администратором и содержать публичные ключи всех машин в организации. Этот файл на должен быть доступен для чтения другим пользователям. Файл содержит публичные ключи, по одному на строку, в следующем виде (поля разделены пробелами): имя системы, публичный ключ и дополнительно, поле с комментарием. Если для одной и той же машины используются различные имена, все эти имена могут быть перечислены через запятую. Формат описан в руководстве пользователя sshd(8).
Каноническое имя системы (в соответствии с записями DNS) используется sshd(8) для проверки машины клиента при регистрации; остальные имена нужны в следствие того, что ssh перед проверкой ключа не преобразует назначенные пользователем имена в канонические, так как тот, кто получил доступ к серверу имён, в состоянии обмануть процесс аутентификации машины.
- /etc/openssh/ssh_config
- Системный файл конфигурации. Формат этого файла и опции конфигурации описаны в ssh_config(5).
- /etc/openssh/ssh_host_key, /etc/openssh/ssh_host_dsa_key, /etc/openssh/ssh_host_rsa_key
- Эти три файла содержат приватные части ключей машин и используются для RhostsRSAAuthentication и HostbasedAuthentication. Если используется RhostsRSAAuthentication-метод протокола версии 1, ssh должен иметь фактический идентификатор пользователя суперпользователя (root), так как ключ машины доступен для чтения только ему. С протоколом версии 2 ssh использует для доступа к ключам машин ssh-keysign(8) при HostbasedAuthentication. Это устраняет необходимость использования для ssh идентификатора суперпользователя (root) при использовании данного метода аутентификации. По умолчанию ssh выполняется без идентификатора суперпользователя (root).
- $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 или 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
- Содержит дополнительные определения для переменных окружения. Смотри выше раздел ПЕРЕМЕННЫЕ.
ДИАГНОСТИКА
ssh завершает работу со статусом выхода или с кодом 255, в случае обнаружения ошибки.
АВТОРЫ
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.
СМОТРИ ТАКЖЕ
rsh(1), scp(1), sftp(1), ssh-add(1), ssh-agent(1), ssh-keygen(1), telnet(1), ssh_config(5), ssh_keysign(8), sshd(8)
- T. Ylonen, T. Kivinen, M. Saarinen, T. Rinne, and S. Lehtinen, SSH Protocol Architecture, draft-ietf-secsh-architecture-12.txt, January 2002, work in progress material.
ПЕРЕВОД
Перевод с английского: Александр Блохин <sass@altlinux.ru>.
| 1.168 | ALT Linux Team |
