Теперь мы знаем ip-адрес нашего сервера, он постоянный и меняться не будет.
Чаще всего администраторы не работают на сервере напрямую. Во-первых у подобных компьютеров вообще нет монитора, во-вторых они могут находиться в другом городе или даже стране, а в-третьих сервера могут даже не существовать физически, являясь виртуальными. Вот этот сервер, с которого вы читаете эту статью, физически не существует и располагается виде виртуальной машины в датацентре компании Reg.ru, который я даже не знаю, где находится.
Для входа на такие сервера используется протокол SSH.

На этапе установки операционной системы мы отказались от инсталляции SSH-сервера и сделали это сознательно, чтобы научиться делать это самостоятельно.

В Дебиане установка пакетов производится при помощи инструмента apt. Основные функции, которые мы будем использовать:

update - обновление списка пакетов. Нужно для того, чтобы наш компьютер знал, какие пакеты есть в хранилище пакетов
install - установка пакета
remove - удаление пакета
purge - удаление пакета вместе с конфигурационными файлами.
upgrade - обновление всех пакетов
autoremove - удаление ненужных пакетов. На этом пункте остановимся подробнее.

В Линуксе существует понятие зависимостей одних пакетов от других. Например, мы устанавливаем текстовый редактор и он имеет функцию проверки орфографии, которая реализована сторонней библиотекой. Пусть она называется libspell, а редактор текста textedit. Вместе с тем программа office тоже использует библиотеку проверки орфографии libspell. Программист, пишущий программу textedit, указывает, что его программа нуждается в libspell, следовательно если мы будем устанавливать его программу, то вместе с ней установится libspell. Он в свою очередь тоже может от чего-то зависеть и эти зависимости тоже будут разрешены - всё, что необходимо для функционирования textedit будет установлено автоматически. До появления менеджеров пакетов разрешением зависимостей приходилось заниматься пользователю, что на практике означало очень сложную установку любой программы, ведь у крупного проекта зависимостей могут быть десятки, а зависимостей у зависимостей - сотни.
Почему же нельзя включить libspell в состав textedit и распространять их вместе? Ну во-первых нужно понять - до какого уровня мы хотим включать библиотеки в программу? И для какой исходной системы? Если я хочу установить программу с графическим интерфейсом на систему, графического интерфейса не имеющую, то вместе с программой будет подтянута и вся графическая подсистема. Вот вполне реальный пример: на нашем новом сервере я пытаюсь установить текстовый редактор mousepad:

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

Т.е. все зависимости этого пакета на одной системе отсутствуют, а на другой - присутствуют. И в первом случае объём установки составит 123 мегабайта, а втором - 1,6 мегабайта.

Теперь представим, что после установки нашего вымышленного редактора textedit мы хотим установить пакет office. Система управления пакетами проверит зависимости и выяснит, что пакет проверки орфографии уже установлен и благодаря этому объём дискового пространства, занимаемого программой office будет значительно меньше.
В ОС Windows применён другой подход - там все библиотеки, которые нужны для работы какой-то программы, уже включены в её установщик. Из-за этого виндовс и разрастается постоянно - с установкой каждой программы дублируются уже и так имеющиеся компоненты.
И вот мы подошли к команде apt autoremove. Она служит для того, чтобы очистить систему от неиспользуемых компонентов. В нашем примере если мы удалим обе программы, использующие модуль проверки орфографии - textedit и office, сам модуль не удалится. Он не используется никакой программой, но и мы отдельно от программ его использовать не можем. Поэтому apt и считает его ненужным.

Немного подразобравшись в том, как в Линуксе устанавливаются программы, попробуем потренироваться на SSH-сервере.
Для начала обновим информацию о пакетах:

apt update

пакеты, которые нам понадобятся, называются openssh-server и openssh-client. Я это и так знаю, но вам нужно ознакомиться со списком пакетов. Мы примерно знаем, что ищем - ssh сервер. Для поиска пакетов используется команда apt-cache search пакет. Воспользуемся ей:

apt-cache search ssh

Будет выдан огромный список пакетов, в названиях и описаниях которых встречается "ssh". Для фильтрации вывода в Линуксе используется программа grep. Передадим вывод ей и поищем слово server

apt-cache search ssh |grep server

вывод всё равно не помещается на экран, так что передадим вывод дальше - программе less

apt-cache search ssh |grep server |less

и вот самой первой строчкой видим, что openssh-server - э то серверная часть протокола SSH, для защищённого удалённого доступа.

Конечно, такие детективные способы поиска ПО применяются не часто, т.к. коль уж вы захотели себе SSH-сервер, то уже вероятнее всего знаете, что вам нужно. Но порой приходится попотеть и так в поисках нужной программы. В этом отношении удобны менеджеры программ, входящие в состав графических оболочек - там программы разбиты по категориям, им присвоен рейтинг, можно почитать отзывы...

Установим и клиентскую и серверную часть:

apt install openssh-server openssh-client

видим, что пакетному менеджеру нужно доустановить кое-какие компоненты, а openssh-client уже присутствует в нашей системе. Соглашаемся нажатием на клавишу Д (или Y).

После короткого ожидания установка программы будет завершена.

Теперь настроим то, что получили.
По умолчанию SSH сервер не позволяет удалённый вход пользователя root - суперадминистратора. Это совершенно верно и лучше так не делать, но я всё равно расскажу, как разрешить вход root-а. Ещё мы сделаем очень важную в плане безопасности вещь - сменим стандартный порт (22) на какой-нибудь другой. Дело в том, что программы-взломщики как правило пытаются соединиться только со стандартными портами всех сервисов и отсутствие на 22 порту ssh-сервера пресечёт попытку соединения. Конечно, никто не мешает просканировать все порты на предмет открытых и найти, где висит ssh-сервер, но такая работа требует серьёзного подхода и выполняется только если ваш сервер действительно надо взломать.

Открываем на редактирование файл /etc/ssh/sshd_config

nano /etc/ssh/sshd_config

ищем строку #PermitRootLogin prohibit-password. Она расположена в начале файла, так что её можно найти и так, но редактор nano умеет осуществлять поиск по файлу. Для этого нужно нажать ctrl w, ввести искомую строку (или её часть - здесь будет достаточно "permitroot") и нажать enter.

и меняем её на

PermitRootLogin yes

Обратите внимание на то, что нужно убрать перед строкой символ #. Этот символ означает, что данная строка является комментарием и при чтении настроек программой будет проигнорирована.

Далее ищем строку #Port 22

убираем в неё символ # и меняем 22 на что-то другое. Только не используйте никакие стандартные порты. С их списком можно ознакомиться здесь. В этом примере я укажу порт 2202. Он свободен и просто запоминается.

Сохраняем ctrl o и выходим ctrl x

Для того, чтобы изменения вступили в силу, нам нужно перезапустить SSH-сервер

service sshd restart

Теперь попробуем подключиться к нашему серверу с другого компьютера. В линуксе уже есть всё необходимое, так что здесь можно просто открыть терминал и написать

ssh Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. -p 2202

т.е. мы подключаемся по ssh к серверу 192.168.1.40, используем порт 2202 и имя пользователя root.
При первом подлючении будет задан вопрос - хотим ли мы действительно подключится, т.к. этот сервер нашей системе ещё неизвестен. Отвечаем yes. Написать надо именно yes - полностью.
После чего будет выдан запрос на пароль

Вводим - и вот мы в удалённой системе. Сейчас сервер можно убрать куда-нибудь в шкаф, отключить от него монитор и клавиатуру (проверьте, чтобы BIOS не блокировал загрузку без неё).

Если вы пользователь Windows, то для того, чтобы попасть на сервер, вам нужно будет скачать программу putty

Она маленькая, скачается очень быстро. Запускаем, вводим параметры подключения:

 

также соглашаемся с соединением с неизвестным сервером:

вводим имя пользователя и пароль:

и вот - мы в системе

В putty можно сохранить настройки подключения. Для этого укажите адрес сервера, порт, имя настроек и нажмите кнопку "Save"

После чего можно будет просто двойным щелчком на строчке "Сервер" вызывать подключение. Также можно указать имя пользователя, под которым осуществляется подключение:

 Для того, чтобы можно было предоставлять ресурсы сервера пользователям, их нужно добавить. Об этом следующая статья