Возможностей организовать удалённый доступ к вашему компьютеру через интернет-соединение существует в большом количестве. Некоторые из них являются очень сложными и используются лишь специалистами в профессиональной среде, в то время как другие — очень простые и их могут освоить даже неопытные пользователи. Мы уже писали о нескольких способах, в частности, о программе TeamViewer и протоколе VNC.
В этой статье мы поговорим о протоколе безопасного подключения SSH, в последнее время ставшего практически стандартом в среде пользователей Linux. Он является очень надёжным, поскольку поддерживает шифрование, а также его очень легко настраивать. Мы рассмотрим особенности протокола SSH, а также научимся выполнять настройки сервера и клиента. Всё, что от вас будет требоваться — наличие компьютера с установленной операционной системой Ubuntu и интернет-подключение.
Что представляет собой протокол SSH
Протокол Secure Shell, известный также как SSH — специальный протокол для безопасного удалённого доступа к компьютеру через сетевое подключение. Протокол имеет много возможностей, в том числе организацию защищённого подключения, запуск командной строки терминала на компьютере, к которому вы подключаетесь удалённо, запуск приложений с графическим интерфейсом, передача файлов и развёртывание приватных сетей.
Существует множество утилит, отвечающих за управлением протоколом. На операционной системе Ubuntu самым известным является Open SSH. Это полностью свободный продукт с открытой лицензией и полным набором самых необходимых функций. Клиент для управления SSH-подключением уже включён в дистрибутив Ubuntu, вам нужно будет лишь установить и настроить серверные компоненты. Управление осуществляется через команды в терминале.
Установка SSH в Ubuntu
Поскольку протокол SSH клиент для его управления является общепринятым стандартом, установить его можно при помощи короткой команды в терминале Ubuntu. для этого запустите сам терминал, нажав комбинацию кнопок на клавиатуре Ctrl + Alt + T, после чего примените команду sudo apt-get install ssh. После подготовки к скачиванию утилита запросит, хотите ли вы продолжить. переключите клавиатуру на русский язык и нажмите Д. На вашем компьютере с Ubuntu установка ssh будет завершена уже через пару секунд. Если вы желаете активировать автоматический запуск при включении системы, используйте для этого команду sudo systemctl enable sshd. соответственно, если потом вы пожелаете убрать службу из автоматического запуска, вам понадобится команда sudo systemctl disable sshd.
Теперь можно проверить, как всё работает. Этого достаточно попробовать подключиться к локальному SSH server: ssh localhost. Утилита обязательно запросит пароль суперпользователя, а также предложит добавить введённый адрес в список разрешённых. Если у вас всё работает, как положено, вы увидите небольшое сообщение, заканчивающиеся уведомление о дате последнего подключения к адресу.
Теперь можно подключаться к любому компьютеру в сети, если вы знаете его IP-адрес и имя пользователя. для этого в терминале вам нужно ввести команду следующего формата:
ssh имя_пользователя@ip_адрес
Например, если вы хотите подсоединиться к компьютеру Васи Пупкина с адресом 132.14.25.10, то команда будет выглядеть следующим образом:
ssh vasya_pupkin@132.14.25.10
Настройка SSH в Ubuntu
Для правильной и безопасной работы с SSH-сервером его нужно определённым образом настроить. Для этого нужно отредактировать файл параметров sshd_config, расположенный в каталоге /etc/ssh. Примечательно, что его нельзя изменить, просто открыв через файловый менеджер в обычном текстовом редакторе. Система оповестит вас о недостаточных правах, и вы просто не сможете сохранить изменения. Поэтому вам снова понадобится терминал и знание нескольких команд, о которых мы сейчас расскажем. Давайте рассмотрим необходимые шаги по настройке ssh сервера в операционной системе Ubuntu.
- Создайте резервную копию файла настроек, для того, чтобы можно было восстановить оригинальный файл в случае каких-то ошибок: sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults.
- Откройте файл конфигурации для его правки: sudo nano /etc/ssh/sshd_config.
- Выполните необходимые настройки (об этом напишем дальше).
- Чтобы сохранить выполненные изменения, нажмите последовательно Ctrl + X, затем Y и Enter.
- Перезапустите службу SSH на вашем компьютере: sudo systemctl restart ssh.
- Попробуйте подключиться к удалённому или локальному компьютеру, применяя новые настройки (об этом мы также напишем ниже).
Что можно поменять в настройках SSH
- Порт. По умолчанию утилита использует порт 22. Если его не изменить на другой, злоумышленник очень легко сможет получить доступ к вашей системе. Чтобы поменять номер порта, найдите строчку Port 22, и замените 22 на любой другой номер.
- Протокол. Утилита SSH поддерживает два протокола для лучшей совместимости. Тем не менее, протокол 1 уже считается устаревшим и небезопасным, поэтому лучше всего пользоваться протоколом 2. Чтобы активировать его, найдите строчку #Protocol 2, удалите знак # в начале строки. В некоторых случаях может встречаться запись типа Protocol 1, 2. В таком случае вам нужно оставить только последнее значение.
- Автоматический вход суперпользователя. Непонятно зачем, но по умолчанию эта функция активирована. Если её не отключить, то это может серьёзно повредить вашей безопасности. Найдите в конфигурационном файле строку PermitRootLogin и замените значение prohibit-password на no.
- Авторизация по ключу. Подключение по ключу является наиболее надёжным, так как его практически невозможно взломать. Вам нужно найти строку PubkeyAuthentication и проверить, не отличается ли значение этого параметра от необходимого yes. Как создавать сам ключ, мы расскажем в следующем пункте.
- Доступ определённой группы пользователей. Если вы хотите, чтобы доступ к удалённому компьютеру могла получить определённая группа пользователей, а не кто попало, в конце добавьте несколько строк типа: AllowUsers User1, User2, User3 либо AllowGroups Group1, Group2, Group3, если дело касается групп. Вместо User и Group пропишите конкретные названия.
- Разрешение запуска графического интерфейса приложений. Чтобы в дальнейшем запускать приложения с графическим интерфейсом на удалённом компьютере, вместо того чтобы довольствоваться командной строкой, в конфигурационном файле добавьте строчку, прописав X11Forwarding yes.
Минимально необходимые команды
- Разрешение использования порта в брандмауэре. Если вы пользуетесь на своём компьютере с операционной системой Ubuntu брандмауэром для контроля соединений, примените команду, разрешающую использование интернет-подключения утилитой SSH: sudo ufw allow 2222. Вместо 2222 пропишите номер порта, который использовали лично вы.
- Подключение к серверу. Немного выше мы уже писали, как можно подключаться к удалённому компьютеру, но не помешает напомнить. Введите команду вида ssh имя_пользователя@ip_адрес, где в первом параметре напишите логин для подсоединения к компьютеру, а во втором — его адрес в сети.
- Выполнение удалённых команд. Допустим, вам нужно удалённо выполнить какую-либо команду на компьютере, к которому вы подключаетесь. Для этого к команде для подключения к компьютеру, указанной в предыдущем пункте, добавьте команда, которую нужно исполнить. например, вернёмся, к примеру, с Васей Пупкиным: ssh vasya_pupkin@132.14.25.10 ls. На удалённом компьютере будет выполнена команда ls.
- Аутентификация на сервере с применением ключа. Поскольку пароль очень легко подобрать, наиболее надёжным и безопасным способом подключения к удалённому компьютеру через сеть будет с использованием специального ключа. Чтобы создать его, воспользуйтесь командой ssh-keygen -t rsa. Ответьте на все вопросы, которые у вас спросит утилита настройки. Затем отправьте созданный ключ на удалённый сервер: ssh-copy-id -i ~/.ssh/id_rsa.pub имя_пользователя@адрес_компьютера. Теперь, когда вы будете подключаться к этой удалённой машине, пароль запрашивается не будет, а будет использоваться персональный ключ.
- Передача файлов. Иногда необходимо передать какие-то файлы или документы на удалённый компьютер. Для этого вам понадобится следующая команда: scp /расположение/файла имя_пользователя@адрес_компьютера: расположение/папки. Вот конкретный образец на основе примера с Васей Пупкиным): scp /home/text.pdf vasya_pupkin@132.14.25.10:home/documents. Чтобы использовать сжатие файлов и пересылать целые папки, поможет команда tar czf — /home/user/file | ssh имя_пользователя@адрес_компьютера tar -xvzf -C /home/папка_пользователя/.
- Запуск графического интерфейса программ на удалённом компьютере. К примеру, вы работаете из дому, но необходимое программное обеспечение установлено на вашем рабочем компьютере. Его можно запустить удалённо, а на вашем домашнем ПК будет отображаться лишь интерфейс программы, тогда как все вычисления и обработка данных будет происходить на рабочей машине. Если вы уже ранее активировали возможность запуска графического интерфейса программ, воспользуйтесь вот такой командой: ssh -XC имя_пользователя@адрес_компьютера «название_программы».
Заключение
Как видите, ничего очень сложного в настройке протокола ssh на компьютере с операционной системой Ubuntu нет. Вам нужно лишь один раз всё внимательно настроить, воспользовавшись нашей подробной инструкцией, и пользоваться возможностями удалённого подключения. Если у вас возникают вопросы, задавайте их в комментариях.