SSH – это сетевой протокол, позволяющий производить удаленное администрирование компьютеров. Его несомненными плюсами являются надежность и удобство в использовании: он не требует установки дополнительных инструментов и полностью шифрует весь трафик. На операционных системах семейства Linux SSH особенно популярен, так как с его помощью можно легко выполнить настройку серверов.
Оглавление
История SSH
История протокола начинается с 1995 года, когда была опубликована его первая версия, разработанная исследователем Тату Улененом. От своих конкурентов – rlogin, telnet и rsh – он отличался конфиденциальностью и безопасностью, так как полностью шифровал и передаваемые данные, и ключи доступа к удаленным устройствам. К 200 году SSH приобрел уже около 2 000 000 пользователей, что для того времени было неплохим результатом. Но настоящее признание протокол приобрел в 2006 году, мосле его признания группой IETF в качестве рабочего стандарта.
Для аутентификации в основном используются цифровые подписи, но допускается также и ключи доступа, или, проще говоря, пароли.
Доступ к удаленному компьютеру
Подключение через SSH
Итак, перейдем к подключению. Протокол предоставляет возможность выполнять любые действия от имени того удаленного пользователя, к которому происходит подключение (при условии, что эти действия ему разрешены). Именно поэтому SSH иногда используют для скрытия IP-адреса – при подключении любые запросы проходят через удаленный компьютер.
Вид команды предельно прост: достаточно ввести текст данного вида:
# ssh user@example.com
Или:
# ssh user@example.com -p port
Где ssh – константа, а user и example.com – имя пользователя и домен/IP-адрес удаленного компьютера. Так как существуют очень мощные компьютеры, называемые серверами, и к ним подключается множество пользователей, то были созданы порты – т. е. трафик на удаленном компьютере делится на несколько частей.
Давайте попробуем подключиться к удаленному компьютеру с именем пользователя master_cdqtfzefxq и хостом 206.189.30.191. Введем команду:
# ssh master_cdqtfzefxq@206.189.30.191
При подключении к незнакомым хостам у нас спрашивают, готовы ли мы подключиться к удаленному компьютеру. Отвечаем “yes”:
Теперь в зависимости от уровня защиты пользователя необходимо ввести пароль:
Как вы видите, у нас работает самый обычный терминал, правда, от имени другого пользователя:
Теперь мы можем выполнять различные действия в терминале, как и у обычного пользователя: устанавливать и запускать программы,просматривать файлы и т. д., правда, без графического интерфейса. Опережая вопросы в комментариях отвечу, что подключение к удаленному компьютеру с графическим интерфейсом возможно, но требует долгой и тщательной установки. К тому же такие действия требуют наличия хорошего интернет-соединения как на сервере, так и на вашем компьютере.
Работа на удаленном компьютере
Для демонстрации возможностей запустим в программе nano (консольный редактор текстовых файлов) текстовый документ с именем ssh_demonstration.txt:
Вот терминал в процессе редактирования файла:
Теперь попробуем открыть файл в less (просмотрщик текстовых файлов):
Теперь надо попробовать установить программу. Не во всех ssh-аккаунтах есть root-доступ, необходимый для выполнения данного действия, поэтому стоит заранее об этом позаботиться.
Итак, введем команду установки текстового браузера links2:
# sudo apt-get install links2
Теперь откроем браузер командой:
# links2
Чтобы открыть URL-адрес, надо нажать G и ввести его:
И вот вожделенный Google (правда, не совсем такой, как все привыкли):
Вот и все! Остается лишь добавить, что для выхода из терминала удаленного пользователя нужно ввести команду:
# exit
Копирование файлов с сервера на клиент и обратно
Часто пользователи встречаются с проблемой копирования файдов между удаленным устройством и своим компьютером, но не стоит паниковать! Необходимо всего лишь воспользоваться предустановленной утилитой scp и знать данные сервера. Вот как делается копирование файла с сервера на клиент:
# scp path/myfile user@host:/full/path/to/new/location/
И наоборот:
# sc user@host:/full/path/to/new/location/mylife path/
Как можно легко догадаться, в первом примере вначале идет команда scp, потом путь к файлу на вашем компьютере и папка назначения на сервере. Во втором же примере после команды идет путь к файлу на сервере и папка назначения на компьютере. Стоит заметить, что пароль пользователя никто не отменял, и воспользоваться переносом файла без него будет сложно.
Попробуем перенести на компьютер заранее созданный файл ssh_demonstration.txt. Для этого введем команду (от имени локального пользователя, конечно же):
# scp master_cdqtfzefxq@206.189.30.191:ssh_demonstration.txt '/home/daniil/Рабочий стол'
На скриншоте можно увидеть, что файл успешно появился на рабочем столе.
Аутентификация без пароля
Наверное, тем, кто часто заходит на удаленные сервера с помощью ssh, не очень-то удобно каждый раз вводить свой пароль. Поэтому предусмотрена возможность аутентификации с помощью открытого ключа доступа.
Для начала необходимо этот самый ключ создать. Делается это с помощью команды:
# ssh-keygen
На этом шаге нас спросят, в какой папке и под каким именем сохранить открытый и закрытый ключи. Чтобы оставить по умолчанию, нажмите Enter:
Теперь можно ввести пароль для ключа (а можно и не вводить):
И вот ключ создан:
Теперь ключ надо скопировать на сервер командой:
# ssh-copy-id user@server
К примеру, в моем случае:
Вот и все! Можете входить на сервер без пароля!
Работа с файлами через FileZilla
FileZilla – программа, позволяющая обмениваться файлами через ssh с использованием графического интерфейса. Установить ее можно командой:
# sudo apt-get install filezilla
Надо заметить, что установка на удаленный сервер не требуется. Просто запустим программу через меню или командой:
# filezilla
Интерфейс программы предельно прост:
Перейдем на вкладку “Файл”->”Менеджер сайтов”. Здесь нажмем “Новый сайт”, введем хост и порт, а также выберем протокол SFTP. Логин и пароль можно не вводить только на некоторых серверах, в противном случае выберите тип входа “Нормальный” и введите ваши данные.
Теперь подтвердим, что доверяем серверу:
Видим, что подключение прошло успешно:
В левой колонке отображаются локальные файлы и папки, а в правой – удаленные. Их можно перенести и скопировать без использования терминала. К примеру, перенесем уже давно созданный ssh_demonstration.txt:
Вот и все! Пользуйтесь на здоровье – такой способ очень удобен для организации собственного хостинга.
Подключение с помощью утилиты PuTTy
PuTTy – кроссплатформенная утилита, позволяющая легко и быстро производить подключение по SSH. Установить ее можно командой:
# sudo apt-get install putty
Для начала запустим программу:
Теперь после ввода хоста и порта нажимаем “Open”. Нас просят ввести логин и пароль пользователя:
Вот и все!
Также при установленном на сервере X11 и оконном менеджере будет возможность подключения с графическим интерфейсом. Остальные же действия будут аналогичными при подключении просто через терминал.
Заключение
Стоит сказать, что сервера – интересная штука, но к ним нужно знать подход. Надеюсь, данная статья поможет вам разобраться. Удачи!
Добрый день. А есть ли способ изменить настройки ssh так, чтобы служба запускалась до экрана логина в десктоп ubuntu 18.04? Иначе в этой версии ubuntu ssh запускпется только после залогинивпния в графическом режиме юзера. А вдруг перезагрузка и всё…снаружи я беспомощен. Об этом почему-то в сети нет инфы. А там ведь “прекрасный” systemd. А я и не в курсе как его бороть в этом случае…