<< Предыдущий раздел | /\ Содержание | >> Следующий раздел

Что такое ssh

Назначение ssh


Ssh -- это программа для удаленного входа в другой компьютер через сеть, удаленного исполнения команд и копирования файлов между компьютерами. "Ssh" расшифровывается как "Secure Shell". Ssh обеспечивает надежную авторизацию и безопасную передачу данных по открытым каналам связи. Ssh предназначена для замены программ rlogin, rsh, rcp и telnet.

При использовании программ telnet, rlogin и ftp есть две проблемы, связанные с безопасностью.

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

Как ssh работает


Для того, чтобы объяснить принцип работы Ssh, воспользуемся аналогией со шпионской деятельностью (благо, общего очень много) на примере известного героя Штирлица.

Представим себе, что Штирлицу ("Юстас") надо передать в Центр ("Алекс") некое сообщение, но старый шифр раскрыт. Что делать? Самый очевидный ответ -- организовать где-нибудь встречу для передачи Юстасу нового шифра ("договориться о новом коде"). Но что, если это невозможно, и единственный канал связи -- открытый? Казалось бы, безвыходная ситуация.

Однако сравнительно недавно, в середине 1970-х, математиками был открыт алгоритм RSA, позволяющий использовать в криптографии так называемые "публичные ключи". Идея заключается в том, что есть два криптоключа -- один для зашифровки, а другой для расшифровки. Ключ для зашифровки называется "публичным ключом", поскольку может быть свободно передан любому и не является секретным. Ключ же для расшифровки является секретным и называется "приватным ключом".

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

Таким образом, если бы действие "Семнадцати мгновений весны" происходило в наше время, то Алексу достаточно было бы открытым текстом отправить Юстасу новый публичный ключ, и Мюллеру и компании осталось бы только рвать на себе волосы.

Замечание
Возможность кого угодно обмениваться надежно шифрованной информацией сильно не понравилась правительству США. Поэтому оно заняло, мягко говоря, дурацкую позицию в отношении ПО для криптографии, приведшую, в частности, к тому, что есть два варианта Ssh -- международный "i" (international) и американский "us". В США (и некоторых других странах) разрешается использовать только версию "us", содержащую меньше возможностей. (Реально ситуация чуть сложнее, но это не принципиально.)

Установка ssh

Пакет Ssh был создан в Технологическом Университете Хельсинки и его домашняя страница расположена по адресу

http://www.ssh.fi/sshprotocols2/
а исходные тексты доступны по адресу

ftp://ftp.cs.hut.fi/pub/ssh/
зеркало в Новосибирске --

ftp://sunsite.nstu.ru/pub/mirrors/ftp.cs.hut.fi/ssh/

Существует два варианта Ssh: версия 1 и версия 2, именуемых обычно ssh1 и ssh2. Хотя ssh2 является более продвинутым вариантом, более распространен пока ssh1, на нем мы и сосредоточимся.

На момент написания этих строк последней в семействе ssh1 является версия 1.2.27. Хотя можно взять исходные тексты по указанному выше адресу и самостоятельно собрать пакет, лучше воспользоваться готовыми .rpm-файлами.

Наиболее распространенным rpm-дистрибутивом Ssh является набор из четырех пакетов, собираемых в Чехии. В ИЯФ они доступны в директории

ftp://rdist.inp.nsk.su/pub/Linux/security/i386/
или по NFS в директории

/net/rdist/dist/security/i386/
это пакеты ssh, ssh-clients, ssh-server и ssh-extras, все с суффиксом -1.2.27-2i.i386.rpm.

Однако эти пакеты не устанавливаются в RedHat 5.2, поскольку требуют слишком новых версий библиотек. Поэтому можно воспользоваться rpm-пакетом сборки SibLUG (Siberian Linux Users Group), доступным по адресу

ftp://sunsite.nstu.ru/pub/linux/install/siblug/RH5.x/i386/

Собственно пакет Ssh состоит из трех компонентов: сервер (sshd), клиентские программы (ssh, slogin, scp) и нескольких служебных программ. Пакет ssh-1.2.27-1.i386.rpm от SibLUG содержит их все.

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

Использование ssh

Программы ssh, slogin и scp используются точно так же, как и rsh, rlogin и rcp. Отличия заключаются, во-первых, в том, для беспарольного входа файла .rhosts на удаленном компьютере недостаточно, а во-вторых, даже команды "ssh <команда>" и "rcp" при отсутствии беспарольного входа просто спросят пароль.

Кроме того, scp, в отличие от rcp, еще и показывает процент сделанной работы по мере копирования.

При первом запуске ssh создаст директорию ~/.ssh, а при первом входе на конкретный компьютер запросит подтверждение, действительно ли вы этого хотите (поскольку компьютер отсутствует в списке известных машин):

bobby:~% ssh jerry
Host key not found from the list of known hosts.
Are you sure you want to continue connecting (yes/no)? yes
Host 'jerry' added to the list of known hosts.
Creating random seed file ~/.ssh/random_seed.  This may take a while.
ivanov@jerry's password: набираем пароль
Last login: Tue May 25 09:19:18 1999 from bobby.inp.nsk.su
jerry:~% _

При повторном запуске потребуется лишь ввести пароль:

bobby:~% ssh jerry
ivanov@jerry's password: набираем пароль
Last login: Tue May 25 15:49:25 1999 from bobby.inp.nsk.su
jerry:~% _

Два замечания. Во-первых, в ответ на вопрос "yes/no" надо набрать "yes" (на не "y"). Во-вторых, для ssh "jerry" и "jerry.inp.nsk.su" -- разные компьютеры, и если теперь набрать команду "ssh jerry.inp.nsk.su", то вопрос, действительно ли мы хотим зайти на указанный компьютер, будет задан вновь.

Настройка ssh

Файлы конфигурации


У пакета Ssh есть два "комплекта" файлов конфигурации: общесистемные в директории /etc/ или, в некоторых версиях, /etc/ssh/, и персональные для каждого пользователя, хранящиеся в директории ~/.ssh/.

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

Предупреждение
Файлы ssh_host_key и ssh_host_key содержат приватный и публичный ключи компьютера, и при переустановке системы или пакета Ssh их содержимое обязательно должно сохраняться.

В персональных настройках часть файлов должна иметь права на чтение только пользователем, а часть может (но не обязательно) быть доступна всем. Лучше всего сделать всю директорию ~/.ssh доступной только для себя командой

chmod -R og-rwx ~/.ssh

Причем сделать это следует на всех компьютерах, которыми пользуетесь.

Настройка беспарольного входа


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

Поскольку процедура эта не слишком интуитивно-понятная, а в документации на Ssh "пошаговые" инструкции на эту тему отсутствуют (это прямо записано как "надо бы сделать" в файле TODO), приведем детальное описание требуемых шагов.

Последовательность действий тут следующая:

  1. Создать ключи при помощи команды ssh-keygen.
  2. Положить приватный ключ в ~/.ssh/identity (по умолчанию ssh-keygen сделает это сам).
  3. Добавить публичный ключ в файл ~/.ssh/authorized_keys на том компьютере, вход на который должен происходить без пароля.

Для генерации пары ключей достаточно запустить команду ssh-keygen:

bobby:~% ssh-keygen
Initializing random number generator...
Generating p:  ........++ (distance 124)
Generating q:  ......................++ (distance 328)
Computing the keys...
Testing the keys...
Key generation complete.
Enter file in which to save the key (/home/ivanov/.ssh/identity):<Enter>
Enter passphrase: <Enter>
Enter the same passphrase again: <Enter>
Your identification has been saved in /home/ivanov/.ssh/identity.
Your public key is:
1024 33 12913738256340298710059171689915842154375256914824221671871874357756
3659626759215847653490823781603860082037425573246549608512317229841156397014
4924521593039853737665394617676169185262964253571771338998219867068779128524
3669389707472603577041589530866646165573655919196199244485490121992336959595
2072162398963 ivanov@bobby.inp.nsk.su
Your public key has been saved in /home/ivanov/.ssh/identity.pub
bobby:~% _

Обратите внимание, что ssh-keygen просит ввести "ключевую фразу" (passphrase). Ключевая фраза позволяет повысить степень безопасности -- если она есть, то при входе на удаленный компьютер обязательно надо будет ее ввести (т.е. это как бы пароль в дополнение к ключу), так что даже если кто-то сможет похитить ваш приватный ключ (файл ~/.ssh/identity), этого будет недостаточно для входа.

Если же нужен именно беспарольный вход, то ключевую фразу следует оставить пустой (просто нажав <Enter>).

Поскольку ssh-keygen автоматически создал файл ~/.ssh/identity, осталось лишь добавить публичный ключ в файл ~/.ssh/authorized_keys на удаленном компьютере.

Файл ~/.ssh/authorized_keys представляет собой список публичных ключей, обладателям которых разрешен доступ, по одному ключу на каждой строке. Причем строки эти довольно длинные, так что если модифицировать файл при помощи текстового редактора, то следует предварительно отключить автоматический перенос слов (word-wrapping).

Публичный ключ ssh-keygen помещает в ~/.ssh/identity.pub, так что лучше всего скопировать его в какой-нибудь временный файл на удаленном компьютере при помощи scp, а затем "дописать" содержимое к authorized_keys при помощи cat:

bobby:~% scp  ~/.ssh/identity.pub jerry:
identity.pub              |          0 KB |   0.3 kB/s | ETA: 00:00:00 | 100%

bobby:~% ssh jerry
ivanov@jerry's password: набираем пароль
Last login: Tue May 25 16:11:03 1999 from bobby.inp.nsk.su
jerry:~% cat identity.pub >>.ssh/authorized_keys
jerry:~% exit
Connection to jerry closed.
bobby:~% ssh jerry
Last login: Tue May 25 16:11:45 1999 from bobby.inp.nsk.su
jerry:~% _

Обратите внимание, что при перенаправлении вывода команды cat следует указывать двойной символ ">", а не одинарный, чтобы содержимое identity.pub было добавлено к authorized_keys, а не заменило его.

Файл .rhosts


Поскольку Ssh использует другие методы авторизации, наличие файлов .rhosts на используемых компьютерах больше не требуется, и их можно удалить. Их наличие значительно уменьшает степень безопасности, поскольку позволяет воспользоваться для входа обычным rlogin, который, как мы упоминали выше, сравнительно легко взламывается.

Настройка ssh-клиента под Windows

Где взять


Первоначально одним из сдерживающих факторов в распространении Ssh было отсутствие свободно распространяемых ssh-клиентов под Windows.

В настоящее же время имеется ssh-plugin ("дополнение") к пакету TeraTerm Pro, под названием TTSSH.

Домашняя страница TeraTerm Pro --

http://hp.vector.co.jp/authors/VA002416/teraterm.html
а TTSSH --

http://www.zip.com.au/~roca/download.html

В ИЯФ и TeraTerm Pro, и дополнение к нему доступны в директории

ftp://ftp.inp.nsk.su/pub/Crypt/ssh/TeraTerm/

Несколько слов о TeraTerm Pro


Пакет TeraTerm Pro создан в Японии и является свободно распространяемым. Это эмулятор терминала для Windows95/NT, есть также версия для Windows 3.1 (но TTSSH для 3.1 отсутствует).

Одной из отличительных особенностей является поддержка русского языка -- прямо при установке программа позволяет выбрать русский язык. При этом программа автоматически "догадывается", что на клиентской машине (Windows) используется набор символов Windows-1251, а на сервере -- koi8-r, и автоматически производит перекодировку.

Это свойство вместе с поддержкой ssh делают TeraTerm Pro практически лучшей программой-эмулятором терминала для России.

И TeraTerm Pro, и TTSSH доступны в исходных текстах.

Установка и настройка TTSSH


Первым делом надо установить TeraTerm Pro. Данный процесс стандартен для Windows -- надо просто распаковать .zip-файл и запустить программу setup.exe. По завершении процесса установки в меню [Пуск] -> Программы появится меню "TeraTerm Pro".

Затем нужно распаковать содержимое файла ttssh.zip в директорию, куда установлен TeraTerm Pro -- обычно это C:\Program Files\TTERMPRO. При этом в директории появится файл ttssh.exe, который и следует запускать.

Поскольку ttssh.exe доступен только прямо в директории, для удобствы следует поместить ярлык на него в меню. Если же запускать просто ttermpro.exe, то будет прежняя функциональность TeraTerm Pro -- без ssh.

При запуске TTSSH в окне "New connection" появляется дополнительный пункт -- "SSH".

Окно открытия соединения TTSSH

При выборе варианта "SSH" появится дополнительное окно, в котором указывается имя пользователя и тип авторизации.

Окно авторизации TTSSH

В частности, для беспарольного входа надо выбрать вариант "Use RSA key to log in" и указать файл, в котором содержится приватный ключ -- этот файл можно просто скопировать из ~/.ssh/identity.

Чтобы каждый раз не вводить заново имя пользователя, стоит один раз произвести настройку при помощи пункта "SSH Authentication" из меню Setup, и затем сохранить ее командой Setup -> Save setup.

Окно настройки авторизации TTSSH

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

Поэтому при работе с TTSSH лучше воздержаться от использования беспарольного входа.


<< Предыдущий раздел | /\ Содержание | >> Следующий раздел