Довольно часто может понадобиться получить доступ к удаленному компьютеру или серверу через интернет. В случае с персональным компьютером, это может понадобиться для срочного решения какой-либо проблемы, а в случае с сервером это вообще очень распространенная практика. В Linux наиболее часто для решения таких задач используется протокол SSH.
Служба SSH позволяет получить доступ к терминалу удаленного компьютера и выполнить там все необходимые вам команды. При своей простоте она достаточно безопасна, чтобы использоваться для решения серьезных коммерческих задач, так и задач обычных пользователей. В этой статье мы рассмотрим как выполняется установка SSH в Ubuntu 20.04, а также поговорим о начальной настройке SSH сервера.
Содержание статьи
Что такое SSH?
SSH или Secure Shell - это протокол безопасного доступа из одного компьютера к другому по сети. У протокола SSH очень много возможностей. Вы можете создавать защищенные соединения между компьютерами, открывать командную строку на удаленном компьютере, запускать графические программы, передавать файлы и организовывать частные сети.
За поддержку протокола SSH в Linux отвечает набор программного обеспечения OpenSSH. Это открытая реализация этого протокола, которая предоставляет все необходимые возможности. В состав пакета OpenSSH входят утилиты для установки соединения, передачи файлов, а также сам ssh сервер.
Установка OpenSSH в Ubuntu
Установить SSH на Ubuntu будет очень просто, программа считается стандартной и используется почти везде. Хотя по умолчанию в дистрибутиве её нет, но зато она есть в официальных репозиториях.
Поэтому для установки откройте терминал с помощью сочетания клавиш Ctrl+Alt+T и выполните команду:
sudo apt install openssh-server
Будет загружено несколько пакетов, а когда установка ssh сервера Ubuntu завершится, программа будет готова к работе. Если вы хотите чтобы служба запускалась автоматически нужно добавить его в автозагрузку. Поэтому чтобы включить SSH в Ubuntu 20.04 выполните:
sudo systemctl enable sshd
Если затем вы захотите удалить службу из автозагрузки, используйте команду disable:
sudo systemctl disable sshd
Что касается клиента ssh, то он уже установлен в системе по умолчанию. Сейчас вы можете попробовать подключиться к локальному ssh серверу просто набрав:
ssh localhost
Cейчас вы можете убедиться что в пределах этой машины 0.0.0.0 означает локальный адрес:
ssh 0.0.0.0
Точно таким способом вы можете получить ssh доступ ubuntu к любому другому компьютеру из сети. Для этого достаточно указать вместо localhost его ip адрес и имя пользователя в таком формате:
$ ssh имя_пользователя@ip_адрес
Настройка SSH в Ubuntu
С параметрами по умолчанию сервер SSH не очень безопасен поэтому перед тем, как программа будет готова к полноценному использованию ее нужно немного настроить. Все настройки сервера SSH хранятся в конфигурационном файле sshd_config, который находится в папке /etc/ssh.
Перед тем как вносить изменения в этот конфигурационный файл рекомендуется сделать его резервную копию, для этого можете использовать такую команду:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults
Дальше вы можете перейти к настройке конфигурационного файла:
sudo vi /etc/ssh/sshd_config
Первым делом желательно сменить порт, на котором работает ssh, возможный злоумышленник не знал включен ли у вас этот сервис. Найдите в конфигурационном файле строчку Port и замените ее значение на любое число, например, Port 2222:
По умолчанию вход от имени суперпользователя включен, рекомендуется отключить такую возможность. Для этого найдите строчку PermitRootLogin и замените ее значение на no:
Чтобы разрешить аутентификацию по ключу, а не по паролю найдите строку PubkeyAuthentication и убедитесь, что ее значение yes.
Как настроить авторизацию по ключу в SSH читайте здесь. После того как все настройки будут завершены, сохраните изменения нажав :w и перезапустите службу SSH:
sudo systemctl restart ssh
Более подробно про настройку и использование различных тонкостей ssh рассказано в статье как использовать ssh.
Если вы изменили порт, то при подключении в клиенте тоже нужно указать новый порт, так как по умолчанию будет использоваться 22, например:
ssh -p 2222 localhost
К тому же, если на компьютере установлен и настроен брандмауэр, то в нем тоже нужно разрешить доступ к новому порту ssh, для этого выполните:
sudo ufw allow 2222
Даже если служба ssh находится на порту по умолчанию, его тоже нужно открыть в брандмауэре если вы собираетесь подключаться к компьютеру через интернет:
sudo ufw allow 22
Настройка ssh Ubuntu 20.04 полностью завершена.
Выводы
Теперь, когда установка SSH в Ubuntu 20.04 завершена, вы можете получить удаленный доступ к своему компьютеру через интернет и быть уверенными что он находится в безопасности. Если у вас остались вопросы, спрашивайте в комментариях.
На завершение видео, где подробно рассказано о том, что такое SSH:
Немного добавлю... После установки сервис ssh сам прописывается в автозагрузку и вручную этого делать не надо. А от себя добавлю: в 16.04 какого-то лешего убрали обращение к DNS (видно для лучшего быстродействия), но мне приятнее видеть "last login .... programmist.firma.lan" нежели просто ip адрес, по этому добавляем в конфиг "UseDNS yes" и все красиво...
А расскажите про удаленную файловую систему? ))
Добрый день! Столкнулся с проблемой. При попытке подключения пишет в соединении отказано (Connection refused)
ssh сервер не запущен или порт фильтруется фаерволом.
Скорее всего ключ располжен неверно. Сгенерированный Вами публичный ключ с расширением *.pub нужно переименовать в authorized_keys (без расширения) и разместить по адресу ~/.ssh/ (домашний каталог, подкаталог .ssh). Т.е. полный путь к файлу должен быть ~/.ssh/authorized_keys.
Надо использовать команду
ssh-copy-pi
и ошибку будут исключены
А такой вопрос:можно ли через ssh подключиться к уже запущенной терминальной сессии?
Нет. Возможно, для решения вашей проблемы подойдет screen.
Всё отлично работает. Две Ubuntu 16.04.5 64 bit. Спасибо за инструкцию.
Как восстановить из sshd_config.factory-defaults?
А расскажите про удаленную файловую систему? ))
С небольшим опозданием пишу, как можно получить доступ к файлам через SSH. Мне это было нужно, чтобы на виртуальную машину с Ubuntu Server 20.04 скопировать файл с хоста.
На клиент устанавливается Midnight Commander:
$ sudo apt install mc
Запускается:
$ sudo mc
На верхней панели выбирается соединение по SFTP:
F9 -> Right -> SFTP link... -> имя-пользователя-сервера@ip-адрес-сервера
Далее вводится пароль от сервера.
IP-адрес сервера можно узнать командой
$ ifconfig
Для этого может потребоваться установка net-tools:
$ sudo apt-get install net-tools
Здравствуйте! Очень информативный сайт, спасибо вам большое. Познаю азы Убунты, интересно жуть 🙂
В статье опечатка два раза указано " sudo systemctl enable sshd", но в первый раз "d" лишняя
Дяд ты если пишешь статью для начинающих ты уже пиши ее до конца для начинающих.. постоянно на этом сайте встречаю непонятные (кажущиеся многим очевидными но лично мне неочевидные) вещи. что значит "нажав :w" ?
читать: "набрав". так становится корректней.
чтобы выйти из файла, сохранив изменения, нажмите:
ESC : w ! Enter
http://lib.ru/unixhelp/vi.txt
а вообще можно использовать редактор попроще, например mcedit (он идёт в комплекте с файловым менеджером mc)
а я к сожалению, не нашел в этой статье информации про ключи, их генерацию итд. хотел освежить память шпаргалкой.
но вообще классный блог, спасибо!
п.с. считается, что открывать доступ по паролю - небезопасно, и лучше использовать ключи.
Как подключиться из основной ОС в гостевую? Из гостевой в основную подключается без проблем, а наоборот никак. Экспериментировать с основной ОС не хочется совсем. Убунты 20.04 и в качестве основной, и в качестве гостевой.
В качестве виртуальной машины - gnome-boxes
vi прикольный, классный, но пока для меня тяжеловат. На курить мануал.
Как мне остановить и запустить службу SSH?
sudo systemctl stop ssh
sudo systemctl start ssh
либо sudo systemctl restart ssh