В предыдущей статье было показано как организовать OpenVPN-сервер на маломощном VDS. Однако описаное решение нормально работает при подключении трёх-пяти клиентов и дальнейшее увеличение числа клиентов упирается в оперативную память. Для решения этой проблемы можно либо менять тарифный план VDS на более дорогой, либо каким-либо образом освобождать память.
Автор этих строк выбрал второй способ. Поскольку список запущеных процессов не такой уж и большой выявить "кандидатов на замену" не составило труда. Выбор пал на ssh-сервер, который потреблял до десяти мегабайт памяти, в то время как реально был нужен не чаще раза в месяц. В качесве замены было решено использовать GNU-реализцию SSH-сервера lsh, которая потребляла не более двух мегабайт памяти. Далее будут описаны подробности этой миграции.
В самом простом случае для замены openssh-server на lsh-server в Debian/Ubuntu достаточно команд:
apt-get install lsh-server invoke-rc.d ssh stop invoke-rc.d lsh-server restart
После этого можно заходить на сервер по SSH. Однако если ранее была настроена авторизация по ключам - её придётся перенастроить. Так же по умолчанию в lsh отключена поддержка sftp. Начинаем преодолевать эти препятствия: для включения подсистемы sftp нужно изменить значение параметра "ENABLE_SFTP" в файле /etc/default/lsh-server с "false" на "true" и перезапустить процесс командой:
invoke-rc.d lsh-server restart
Переходим к авторизации по ключам. Дело в том что lsh не использует файл authorized_keys от openssh, а использует своё хранилище публичных ключей. Кроме того сохраняются эти ключи так же в отличном от openssh виде.
Если у вас есть ключ, сгенерированый с помощью openssh то для его использования нужно выполнить следующие действия: первым делом нужно скопировать его на сервер примерно так:
scp .ssh/id_rsa.pub user@server:/home/user/
Далее нужно залогиниться на сервер и сконвертировать ключ в пригодный для lsh формат командой:
cat id_rsa.pub | ssh-conv > lsh_key_pub
Команда ssh-conv поддерживает работу как с RSA, так и с DSA-ключами. Далее нужно создать (если ещё не была создана) директорию ~/.lsh/authorized_keys_sha1, в которой будут хранится SHA1-хэши ключей. Добавить в неё ключ можно командой:
lsh-authorize lsh_key_pub
После этого на сервере можно авторизовываться по ключу. Более подробно об использовании lsh можно почитать в официальной документации проекта.
На этом всё. Приятной работы!
morbo 2010-03-01 07:19:01 (#)
Опечатка: "SAH1-хэши".