среда, 27 июля 2011 г.

Установка ssh-сервера на Linux

SSH (Secure SHell) — это сетевой протокол для безопасной передачи данных между компьютерами. Его особенностью является то, что передаваемые данные шифруются. Де-факто SSH является одним из стандартов межкомпьютерного общения, и большинство серверов этот протокол поддерживают. В то же время существует большое количество программ, работающих с этим протоколом. В этой заметке я расскажу о том, как установить на своём компьютере SSH-сервер для того, чтобы иметь возможность к нему отдалённо подключиться.

Для осуществления связи по SSH-протоколу необходимо наличие сервера и клиента. Сервер  — это тот компьютер, к которому осуществляется подключение. Клиент, соответственно, тот, с которого подключаются.

Установка сервера в Ubuntu производится в буквальном смысле в одну строчку:
> sudo apt-get install ssh
После ввода пароля и скачивания пакета, можете радоваться, сервер установлен. Чтобы проверить это, попробуйте подключиться к серверу, введя команду:
> ssh localhost
Если всё нормально, система попросит ввести ваш пароль и подключит к серверу.

Однако наличие установленного сервера на компьютере несёт с собой определённые проблемы. Это проблем безопасности — если не повезёт, к вашему компьютеру могут подключиться злоумышленники. Чтобы свести вероятность подобного к минимуму, следует изменить некоторые настройки сервера. Настройки хранятся в файле /etc/ssh/sshd_config, для изменения которого требуется права суперпользователя:
> sudo gedit /etc/ssh/sshd_config
В открывшемся конфигурационном файле следует поменять некоторые параметры.

Во-первых, порт. По умолчанию SSH использует порт 22, и, естественно, все хакеры об этом прекрасно осведомлены. Усложним им жизнь, введя любое другое число (но желательно большее 1023, потому что номера до 1023 имеют специальные значения). Для этого находим строчку
 Port 22
и меняем число 22 на то, что нам нравится. Например, год рождения Путина (как, вы разве ещё не помните его наизусть?) 1952. Постарайтесь не забыть введённое число! Оно потребуется при отдалённом подключении к своему компьютеру.

Далее, проверьте параметр PermitRootLogin. Его следует поставить равным No:
 PermitRootLogin No
Теперь к вашему компьютеру нельзя подключиться из-под учётной записи root. Это означает, что взломщику потребуется подобрать не только ваш пароль, но и ваш логин, что, естественно, осложнит его задачу.

Ну и по мелочи. Во-первых, следует запретить подключение пользователей с пустым паролем:
 PermitEmptyPaswords No
Во-вторых, можно указать имена пользователей, которым разрешено осуществлять подключение:
 AllowUsers login1 login2
где login1, login2 и т. д. через пробел — собственно имена пользователей.

Всё, сохраняем конфигурационный файл и перезапускаем сервер одной из следующих команд (некоторые из них могут не работать, это зависит от настроек вашей системы, но в Ubuntu 11.04 у меня по умолчанию работают все способы):
> sudo restart ssh
> sudo service ssh restart
> sudo /etc/init.d/ssh restart

Пробуем:
> ssh localhost
Если всё нормально, то система скажет вам что-то типа такого:
> ssh: connect to host localhost port 22: Connection refused
Думаю, вы уже догадались, почему: мы же поменяли номер порта! Так что подключение надо осуществлять с ключом -p <номер порта> (я надеюсь, вы ещё не забыли год рождения Путина?):
> ssh -p 1952 localhost
Ну вот, теперь всё нормально. Теперь ваш компьютер, будучи включённым и подключённым к интернету, будет доступен из любой точки земного шара при помощи команды
> ssh -p 1952 <имя пользователя>@<ip-адрес вашего компьютера>
Замечу, что <имя пользователя> можно опустить, если оно совпадает на сервере и на клиенте, а ip-адрес можно узнать командой
> ifconfig

Удачной работы!