QNX4.25 — система довольно старая, но в силу некоторых обстоятельств, необходимо работать именно с ней. В силу своего возраста, в ней нет многих очень удобных вещей, включая удалённый доступ (по TCP/IP). И не просто удалённый доступ, а чтобы можно было попасть в терминал не только из другой машины под управлением QNX, но и из других систем. Да, вы скажете: «но есть же telnetd! И он входит в состав этой ОС». Telnet это конечно хорошо, но как-то уж совсем не современно, к тому же OpenSSH позволяет удалённо смонировать файловую систему, что может быть очень удобно. Итак, сегодня мы будем заводить OpenSSH.
Первоначальная проблема в том, что в QNX4.25 нет генератора псевдослучайных чисел (/dev/random, /dev/urandom), а он необходим для функционирования OpenSSH, т. к. там используется шифрование. К счастью, проблему можно решить при помощи prngd (Pseudo Random Number Generator Daemon).
Далее ничего сложного. (сложностью было откопать версию OpenSSH как можно свежее, и работающую с ним версию prngd).
Исходим из того, что стек TCP/IP 5.10 у нас уже запущен и работает.
Скачиваем два архива:
Необходимо доставить эти файлы на машину с QNX. В случае с виртуальной машиной можно, например, создать iso образ и подключить в качестве компакт-диска.
Распакуем архив prngd.tar. Он содержит в себе бинарник и конфиг. Скопируем их на свои места, и запустим.
/etc/prngd.conf — файл конфигурации
/etc/egd-pool — unix сокет
Всё, демон запущен и работает.
Скопируем себе openssh-6.8.0a-18_inst.sh.tar. Распакуем, и сделаем его исполняемым. Перед запуском установочного скрипта, демон prngd должен быть запущен, т. к. в процессе установки будут автоматически сгенерированы host ключи. В принципе, это можно сделать и позже, вручную, но так гораздо удобнее, правда?
Запустим установку. В случае, если всё прошло успешно, вы увидете примерно следующее:
Теперь надо немного отредактировать файл конфигурации /etc/ssh/sshd_config.
Параметр UsePrivilegeSeparation установить в no (на совести авторов порта, sandbox — не работает).
По умолчанию в QNX пользователь root без пароля, если вы хотите входить под ним по ssh, то устанавливаем параметр PermitEmptyPasswords в yes, и PermitRootLogin в yes. А это уже на вашей совести :-)
Пробуем запустить sshd (обязательно полный путь)
Кажется, всё в порядке. Пробуем подключиться:
Работает! Напоследок, добавим строки запуска в sysinit:
Перезагружаемся и проверяем: