>Подскажите плс как правильно проапдейтить SSH?
>Имеем FreeBSD 4.9 Stable, CVS и обновление портов выполняется регулярно.
>Portupgrade установлен/SSh установлен по умолчанию:
>SSH-1.99-OpenSSH_3.5p1 FreeBSD-20030924.
>При попытке в порту SSH сделать nake выдается сообщение:
>"OpenSSH is a superior version of SSH which has been included in
>the FreeBSD base system since 4.0-RELEASE. This port is now deprecated.
>To override this warning set the REALLY_WANT_SSH environment variable and rebuild."
>
>Не понятно где нужно изменять переменную среды REALLY_WANT_SSH environment.
>Что я неправильно делаю?
Все делаешь неправильно:
# cd /usr/ports/security/openssh-portable/
# less Makefile - принимаешь решение КАК ТЫ будешь апгредить OpenSSH
1) заменить системный PREFIX=/usr, опция для сборки OPENSSH_OVERWRITE_BASE
2) поставить дополнительно более свежий: PREFIX=/usr/local
Вариант 1.
- используется для замены openssh идущего с системой, с опцией OPENSSH_OVERWRITE_BASE=yes вновь собранный из портов OpenSSH будет записан
ПОВЕРХ уже имеющихся в /usr/bin и /usr/sbin бинарников, кроме того
будет осуществлена проверка наличия ключей хостов в /etc/ssh и их
создание в случае отсутствия, ну и туда же будут положены файлы новых
конфигурационных файлов ssh_config и sshd_config
Этот вариант наиболее удобен, особенно для новичков - чтобы не было
каши с тем какой демон или клиент запускается.
Что и как нужно сделать:
- на всякий случай создать копию старой конфигурации: /etc/ssh:
# tar ztvf /tmp/ssh-orig.tgz /etc/ssh (теперь в архиве /tmp/ssh-orig.tgz
у нас ключи хоста и конфигурация клиента - ssh_config и демона - sshd_config
- собираем порт openssh-portable:
# cd /usr/ports/security/openssh-portable
# make OPENSSH_OVERWRITE_BASE=yes WITHOUT_KERBEROS=yes (вторая опция если не хотим Kerberos)
перед следующим пунктом - лучше выдать ВСЕМ on-line пользователям
сообщение о выходе для проведения системных работ:
# wall Please LogOff NOW for system jobs running
останавливаем системный демон sshd:
# kill -9 `cat /var/run/sshd.pid`
# make install
читаем что будет выдано на экран и если нужно предпринимаем указанные
в рекомендации действия
подправляем файл конфигурации /etc/ssh/sshd_config как нам нужно
и запускаем демон sshd:
# /usr/sbin/sshd
смотрим нет ли ругани и сообщения об ошибках и наличие демона в
процессах:
# ps -axuww | grep sshd
Если все хорошо, продолжаем работать дальше, если проблемы - устраняем.
Теперь важное: обычно в системе, OpenSSH хоть и патченный(правленный)
на предмет security и bug-fixes, но он старее чем openssh-portable
в портах. И если мы будем апгрейдить систему через cvsup или ctm,
то в файле /etc/make.conf мы должны запретить сборку openssh и
указать что используем его из портов:
/etc/make.conf
NO_OPENSSH= true # do not build OpenSSH
тогда у нас будет оставаться собранный нами из портов openssh
Вариант 2.
собираем openssh-portable из портов
# cd /usr/ports/security/openssh-portable
# make
# make install
читаем что нам написали и выполняем необходимые действия.
- при таком варианте, во время make install будет проверена системная
директория /etc/ssh и наличие в ней ключей хоста, если они там есть,
то будут перенесены в /usr/local/etc/ssh, если нет - созданы вновь
- теперь конфигурация ssh_config и sshd_config будут в /usr/local/etc/ssh
их необходимо скорректировать под себя
- теперь необходимо убедиться что во всех пользовательских стартап файлах:
shell-rc и login директория /usr/local/bin - первая в пути, для стандартных файлов системы и SHELL=sh|bash|csh|tcsh это файлы:
/etc/profile
/etc/csh.*
например:
[alone]~ > echo $PATH
/root/bin:/root/sbin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/local/sbin:/usr/sbin:/sbin
[alone]~ > echo $SHELL
/bin/bash
[alone]~ >
- последнее что необходимо сделать, изменить путь к демону sshd в
rc-файле (/etc/rc.conf)
...
sshd_program="/usr/local/sbin/sshd"
...
- снова кладем системный демон sshd как описано выше и запускаем собранный
из портов:
# kill -9 `cat /var/run/sshd.pid`
# /usr/local/sbin/sshd
смотрим диагностику, ошибки и добиваемся правильной работы
Все.
PS. Изложение специально для новичков, остальные могут не убивать процесс старого демона sshd и ставить поверх, понимаю что и для чего делают.
PPS. Почему из портов ставится openssh-portable?
Если мы посмотрим порты, увидим:
[alone]~ > ls -la /usr/ports/security/ | grep ssh
drwxrwxr-x 2 root wheel 512 Jul 19 05:07 autossh
drwxrwxr-x 3 root wheel 512 Jan 30 2004 fressh
drwxrwxr-x 2 root wheel 512 Apr 5 2004 gnome-ssh-askpass
drwxrwxr-x 2 root wheel 512 Apr 5 2004 kssh
drwxrwxr-x 2 root wheel 512 Feb 8 2004 mussh
drwxrwxr-x 3 root wheel 512 Mar 27 2004 openssh
drwxrwxr-x 2 root wheel 512 Feb 8 2004 openssh-askpass
drwxrwxr-x 4 root wheel 512 Oct 7 15:59 openssh-portable
drwxrwxr-x 3 root wheel 512 Mar 23 2004 scanssh
drwxrwxr-x 3 root wheel 512 Apr 20 12:04 ssh
drwxrwxr-x 2 root wheel 512 Mar 31 2004 ssh-gui
drwxrwxr-x 2 root wheel 512 Mar 31 2004 ssh-multiadd
drwxrwxr-x 3 root wheel 512 Jul 24 05:11 ssh2
drwxrwxr-x 2 root wheel 512 Apr 21 12:06 ssh2-nox11
drwxrwxr-x 2 root wheel 512 Apr 5 2004 ssh_askpass_gtk2
[alone]~ >
/usr/ports/security/ssh - старый финский SSH для протокола-1 с
известной лицензией
/usr/ports/security/ssh2 - бывший "финский" нонче коммерческий SSH2
с поддержкой SSH-PROTOCOL-1 и SSH-PROTOCOL-2 с ОЧЕНЬ ораниченной
лицензией
OpenSSH - разработан командой из OpenBSD, свобоного пользования.
Важное: команда разработчиков выпускает ДВА ВАРИАНТА OpenSSH:
1) исключительно для OS OpenBSD - в портах это /usr/ports/security/openssh
2) портабельная версия ДЛЯ ВСЕХ ОСТАЛЬНЫХ систем - /usr/ports/security/openssh-portable - ВОТ ЕЕ И НУЖНО(ПРЕДПОЧТИТЕЛЬНО)
ставить, а как, расписано выше.
Из остального, в портах есть несколько вариантов других реализаций SSH -
свободных, а из того что понадобиться - тот или иной вариант ssh-askpass,
потребуется ставить openssh-askpass.
Подобно OpenSSH есть еще несколько портов, один из них OpenSSL - если
он нужен более свежей версии чем в системе, подход такой же как и с
OpenSSH, НО OpenSSL из портов должен быть установлен ДО сборки openssh-portable, чтобы openssh-portable использовал свежие библиотеки
и headers от openssl из портов.