The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Безопасность" (Архив | Для печати)

Собираем OpenSSH и OpenSSL

Автор: Андрей Лаврентьев (lavr@unix1.jinr.ru), http://unix1.jinr.ru/~lavr/

Sources of distribution: openssh, openssl, rsaref, random packages for Solaris

Важное: Для невнимательных, в OS отличные от OpenBSD, необходимо скачивать и устанавливать portable версии OpenSSH, П-О-Р-Т-И-Р-О-В-А-Н-Н-Ы-Й OpenSSH.

Устанавливаем OpenSSH:

  1. Проверяем установлены ли dependence, зависимые библиотеки: OpenSSL, ZLib.

    OpenSSH 2.9p2 или 3.01p требует уже установленных в системе библиотек:

    Если указанные библиотеки установлены, можно перейти к установке OpenSSH, иначе, необходимо собрать перечисленные библиотеки. Для проверки наличия библиотек, в системах FreeBSD/Linux/NetBSD/OpenBSD, воспольуйтесь командой ldconfig, man ldconfig.
    Например (Linux):

    ldconfig -p | grep ssl
    ldconfig -p | grep libz
    ...
    
    Например (FreeBSD):
    
    ldconfig -r | grep ssl
    ...
    
    Например (Solaris):
    
    echo $LD_LIBARARY_PATH
    echo $LD_RUN_PATH
    
    и в соответствии с указанным маршрутом библиотек, использовать команды:
    ls -la /path/lib | grep ssl
    ...
    или
    
    find /path -name "libssl*" -print
    
    Устанавливаем библиотеки ZLib и OpenSSL:

  2. Устанавливаем OpenSSH: Советы очень простые, желательно использовать оптимизацию и свои, возможно, не тривиальные ключи компиляторов gcc/egcs/pgcc/cc. Строго использовать ключи: --disable-suid-ssh --without-rsh --with-pam (если ваша OS поддерживает PAM и вы хотите задействовать поддержку) и помнить что опция --libexecdir=/path - задает путь к месторасположению ssh-askpass

    В ряде систем, отсутствуют драйвера и устройства рандомизации:

    Для их эмуляции можно воспользоваться проектами EGD или PRNGD.
    Для OS Solaris, воспользоваться драйвером random, дистрибутивы ANDIrand указаны выше или EGD, PRNGD.
    Для OS FreeBSD использовать /usr/ports/security/openssh-portable.
    Для OS Linux использовать rpm/srpm или собрать самостоятельно.

    Примечание: Если у вас возникли проблемы на этапе линковки в коммерческих non-intel платформах, ищите правильный порядок следования библиотек -lname и правьте Makefile.
    Дело в том что ни один грамотный администратор, не будет устанавливать на non-intel платформу gcc с его линкером, гнутые ld просто не работают!
    А родные линкеры очень умные и щепетильные в плане построения компилятора и линковщика.
    Позже я добавлю тонкости установки OpenSSH на платформы ConvexOS(что-то типа bsd-43, по-русски глюкало), SPP HP-UX(ядро mach с эмуляцией OS HP-UX - по-русски глюкало), HP-UX.

  3. Устанавливаем OpenSSH-AskPass: Никаких особых тонкостей нет, за исключением использования функции substr|sub в awk/gawk, в оригинальном варианте, в качестве имени функции используется sub - справедливо для гнусного awk(gawk), в коммерческих системах, в awk эта функция называется substr. Патч прилагается выше, как и все необходимые distribution sources.

Генерация новых или недостающих личных и публичных ключей (private/public) для SSH-1(rsa) и для SSH-2(rsa/dsa).

  1. Проверяем есть ли у нас на рабочей машине директория $HOME/.ssh и ее содержимое:
    [unix1]~ > ls -la .ssh
    ls: .ssh: No such file or directory
    [unix1]~ > 
    
    В данном примере, у нас нет такой директории и соответственно нет личных и публичных ключей, на рабочей(клиентской машине) они должны быть, ниже будет пример генерации ключей.
    [unix1]~ > ls -la .ssh
    total 67
    drwxr-xr-x   2 lavr  dug    512 19 ноя 15:40 .
    drwxr-xr-x  71 lavr  dug   7680 22 ноя 15:37 ..
    -rw-r--r--   1 lavr  dug   1475 20 ноя 15:13 config
    -rw-------   1 lavr  dug    537  5 июл  2000 identity
    -rw-r--r--   1 lavr  dug    678 29 янв  2001 identity.pub
    -rw-r--r--   1 lavr  dug  31270 22 ноя 13:40 known_hosts
    
    В данном примере, у нас есть директория .ssh и все необходимые ключи для SSH1: identity - личный, identity.pub - публичный. Но отсутствуют ключи RSA/DSA для SSH2, их необходимо создать.

  2. Генерация личных и публичных ключей:

    1. Если у нас не созданы ключи для SSH-1, создаем их командой ssh-keygen:
      [unix1]~ > ssh-keygen
      Generating public/private rsa1 key pair.
      Enter file in which to save the key (/home/lavr/.ssh/identity): 
      Created directory '/home/lavr/.ssh'.
      Enter passphrase (empty for no passphrase): 
      Enter same passphrase again: 
      Your identification has been saved in /home/lavr/.ssh/identity.
      Your public key has been saved in /home/lavr/.ssh/identity.pub.
      The key fingerprint is:
      6e:28:9e:21:e7:08:60:05:d0:30:fe:9c:b4:c3:19:f7 lavr@unix1.jinr.ru
      [unix1]~ >
      
    2. Если у нас не созданы ключи для SSH-2, создаем их командой ssh-keygen с параметрами rsa и dsa:

      Генерация RSA ключей для SSH-2:

      [unix1]~ > ssh-keygen -t rsa
      Generating public/private rsa key pair.
      Enter file in which to save the key (/home/lavr/.ssh/id_rsa): 
      Enter passphrase (empty for no passphrase): 
      Enter same passphrase again: 
      Your identification has been saved in /home/lavr/.ssh/id_rsa.
      Your public key has been saved in /home/lavr/.ssh/id_rsa.pub.
      The key fingerprint is:
      04:b0:65:aa:dc:c0:e4:23:c2:1c:3a:cb:27:d4:5b:b3 lavr@unix1.jinr.ru
      [unix1]~ > 
      

      Генерация DSA ключей для SSH-2:

      [unix1]~ > ssh-keygen -t dsa
      Generating public/private dsa key pair.
      Enter file in which to save the key (/home/lavr/.ssh/id_dsa):
      Enter passphrase (empty for no passphrase):
      Enter same passphrase again:
      Your identification has been saved in /home/lavr/.ssh/id_dsa.
      Your public key has been saved in /home/lavr/.ssh/id_dsa.pub.
      The key fingerprint is:
      f3:c7:9b:ad:32:08:c1:d0:8f:2b:ef:ec:f1:77:04:d9 lavr@unix1.jinr.ru
      

    Примечание: passphrase при генерации не отображается на экране, следует различать личные rsa ключи для протокола SSH-1 - identity, для SSH-2 - id_rsa и публичные соответственно.

Использование SSH-2 для работы с машинами под управлением SSH-1:

Все что необходимо, это добавить опцию -1 при использовании команд:

slogin,ssh, для scp указывать опцию -oProtocol=1

Примеры:

[unix1]~ > slogin -1 cv
Enter passphrase for RSA key '/home/lavr/.ssh/identity': 
No mail.
No new messages.
cv:/local2/home/lavr> 
На машине(рабочая станция - клиент) unix1 - ssh2, на машине cv - ssh1.

Примеры файлов конфигураций(SSH2):

На своей рабочей станции, я люблю запускать X11 через ssh-agent чтобы затем работать со всеми удаленными машинами с sshd, используя авторизацию через публичные ключи: rsa и/или dsa. Для этого необходимо изменить xinitrc или $HOME/.xinitrc и startx:

Теперь достаточно добавить свои публичные ключи, содержимое файлов:

old_rsa(ssh1) - $HOME/.ssh/identity.pub в файл remotehost:$HOME/.ssh/authorized_keys
rsa(ssh2)     - $HOME/.ssh/id_rsa.pub в файл remotehost:$HOME/.ssh/authorized_keys2
dsa(ssh2)     - $HOME/.ssh/id_dsa.pub в файл remotehost:$HOME/.ssh/authorized_keys2

chmod 755 $HOME/.ssh (или даже 700)
chmod 600 $HOME/.ssh/authorized_keys
chmod 600 $HOME/.ssh/authorized_keys2
Примечание: файлы identity.pub/id_rsa.pub/id_dsa.pub - публичные ключи на локальной машине, в то время как authorized_keys/authorized_keys2 файлы содержащие публичные ключи других машин, с которых разрешен вход через авторизацию по публичным ключам.
Все готово для того чтобы с рабочей машины заходить на удаленные, на которых запущен sshd(2'ой или 3'ей версии) без пароля, через авторизацию публичных ключей. Если вы привыкли запускать X11 через xdm, то указанную выше процедуру следует проделать с xsession.

SSH для Windows:

Clients:

SCP for Windows:

SFTP for Windows:

Client-Server для OS Windows:

Вариации SSH & SSHD for Windows на базе Cygwin:

Коммерческие продукты для OS Windows:

Some links and resources:

Ссылки на месторасположения где находятся оригиналы:

Ссылки на руководства SSH/OpenSSH

Русскоязычные:

Оригиналы in english:

Списки рассылок:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру