SSH для новичков

Программистов, сисадминов, devops’ов, тестировщиков часто объединяет использование некоторых общих технологий. Например, возможность иметь удалённый доступ к серверу пригодилось бы любому из указанной выше анекдотичной компании. Поэтому в этой статье мы рассмотрим основы работы с протоколом SSH на базовом уровня (без генерации ключей, подписей, мам, пап и кредитов). «Продвинутое» использование посмотрим уже отдельно, в следующий раз. Материал подготовил Макс, автор YouTube-канала PyLounge. Поехали!
Введение
SSH (Secure SHell — защищенная оболочка) — сетевой протокол прикладного уровня, предназначенный для безопасного удаленного доступа к различным системам (Linux, Windows, Mac).
Данный протокол шифрует всю передаваемую информацию по сети. По умолчанию, используется 22-й порт. В основном он нужен для удаленного управления данными пользователя на сервере, запуска служебных команд, работы в консольном режиме с базами данных.
Эта служба была создана в качестве замены не зашифрованному Telnet и использует криптографические техники, чтобы обеспечить, что всё сообщение между сервером и пользователем было зашифровано.
Чтобы установить SSH-соединение, необходимы два компонента: SSH-сервер и SSH-клиент. Сервер прослушивает определенный порт (по умолчанию это порт 22) и при успешной аутентификации дает доступ пользователю. Все команды, которые используются на SSH-клиенте, отправляются через защищенный канал связи на SSH-сервер, на котором они выполняются и откуда отправляют результат работы обратно клиенту.

SSH-сервер
Устанавливается на управляемой операционной системе и принимает входящие подключения от клиентских машин, проверяя соединение одним из способов:
- по IP-адресу клиента, что не слишком безопасно из-за риска подмены;
- по публичному ключу клиента и имени пользователя. Нужно создать приватный (закрытый) и публичный (открытый) ключ. Зашифровав информацию одним ключом, можно расшифровать ее только другим;
- по паролю клиента, который передается в зашифрованном виде. Это один из наиболее распространенных вариантов. Вводить его нужно при каждом подключении.
Платные и бесплатные SSH-серверы есть для всех распространенных ОС:
- BSD — OpenSSH;
- Linux — dropbear, lsh-server, openssh-server;
- Windows — freeSSHd, copssh, WinSSHD, OpenSSH и т. д.
SSH-клиент
Используется для входа на удаленный сервер и выполнения команд. Через клиент выполняется управление удаленным компьютером.
SSH-клиенты разработаны для всех ОС. Имеют платные и бесплатные версии:
- Linux/BSD — openssh-client, putty, ssh, Vinagre;
- Windows — PuTTY, SecureCRT, ShellGuard;
- Android — connectBot.
Встроенный SSH-клиент Windows, основанный на OpenSSH, предустановлен в ОС, начиная с Windows 10 1809.
Установка OpenSSH на Ubuntu
Установка с помощью менеджера пакетов apt-get:
sudo apt-get install openssh-server
Проверка SELinux
Security Enhanced Linux, или SELinux – это усовершенствованный механизм контроля доступа, встроенный в большинство современных дистрибутивов Linux. Первоначально он был разработан Агентством национальной безопасности США для защиты компьютерных систем от вторжения злоумышленников и взлома. SELinux также может помешать работе с ssh. Поэтому необходимо убедиться, что он отключен, либо отключить его.
Устанавливаем доп. инструменты для работы с сетью и настройками безопасности:
sudo apt-get install policycoreutils sudo apt-get install net-tools
Проверяем статус SELinux. Состояние должно быть disable .
sestatus
Подключение к виртуальной машине с типом подключения NAT
Если виртуальная машина использует тип сетевого подключения NAT, то первоначально необходимо настроить проброс портов. Пробросим порт хоста 2222 (или любой свободный) на гостевой порт виртуальной машины номер 22 (порт ssh по умолчанию).

После этого мы можем подключиться из Windows к нашей виртуальной машине.
Подключение по ssh через PuTTY
Т.к. в качестве сетевого подключения у виртуальной машины используется NAT, при подключении мы будем указывать петлевой адрес localhost (127.0.0.1) c портом, на который был назначен проброс.

После этого вводим имя пользователя (пользователь должен существовать в linux. ) и пароль от этого пользователя.
Подключение по ssh через Командную строку Windows (cmd)
Запускаем командную строку сочетанием клавиш Win + R . В открывшемся окне указываем cmd. Нажимаем OK.

В общем видео подключение по ssh имеет вид:
ssh имя_пользователя@ip_адрес_компьютера_к_которому_подключаемся -p порт
Если для подключения используется стандартный порт ssh — 22, то порт можно не указывать.
В открывшемся окне вводим команду:
ssh student@127.0.0.1 -p 2222
Вводим пароль пользователя. Всё. Вы великолепны!
Подключение к виртуальной машине с типом подключение Сетевой мост
С типом подключения Сетевой мост необходимо выдать статический ip для Linux системы. Дальнейшее подключение будет уже по этому, выданному ip, а не через localhost.

Установка статического ip
Начиная с выпуска Ubuntu 17.10 NetPlan теперь это инструмент настройки сети по умолчанию для управления настройками сети, заменяющий файл конфигурации /etc/network/interfaces , который использовался в предыдущих версиях.
Файлы конфигурации для Netplan находятся в каталоге /etc/netplan и написаны на языке YAML. В этом каталоге вы найдете файлы конфигурации YAML.
Откроем конфигурационный файл:
sudo nano /etc/netplan/*.yaml
Отредактируем конфигурационный файл:
network: version: 2 renderer: NetworkManager ethernets: enp0s3: dhcp4: false addresses: [10.40.0.224/24] gateway4: 10.40.0.1 nameservers: addresses: [10.2.0.8, 10.2.0.3]
- ethernets — указывает на проводное Ethernet подключение;
- enp0s3 — имя сетевого интерфейса (можно узнать командой ifconfig);
- dhcp4 — автоматическая выдача ipv4-адреса с помощью службы dhcp (для ipv6 указывать dhcp6);
- addresses — ip-адрес и маска сети, которые назначаются компьютеру;
- gateway4 — шлюз по умолчанию;
- nameservers — список dns-серверов.
Посмотреть настройки можно с хостовой машины на Windows с помощью команды ipconfig /all.
Чтобы применить изменения и перезагрузить сеть, вводим команду:
sudo netplan apply
Подключение по ssh
Запускаем командную строку сочетанием клавиш Win + R . В открывшемся окне указываем cmd. Нажимаем OK.
В открывшемся окне вводим команду:
ssh student@10.40.0.224
Вводим пароль пользователя. Всё. Вы великолепны (2)!
Заключение
Несмотря на высокую защиту протокола, использование стандартного порта значительно повышает риск взлома сервера. Например, это можно сделать при помощи brute-force (атака полным перебором). Порт 22 — открытый, поэтому злоумышленнику нужно только подобрать логин и пароль к серверу. Это сложно, но возможно. Чтобы максимально ограничить доступ к серверу для злоумышленников (настроить брандмауэр, iptables), можно сменить SSH-порты.
Ресурсы, которые использовал
- Как включить SSH в Ubuntu 20.04 (Routerus):https://routerus.com/how-to-enable-ssh-on-ubuntu-20-04/
- Коротко об SSH / Хабр: https://habr.com/ru/sandbox/166705/
- Что такое SSH (блог REG.RU): https://help.reg.ru/support/hosting/dostupy-i-podklyucheniye-panel-upravleniya-ftp-ssh/chto-takoye-ssh
Что такое SSH

Обновлено: 24.07.2017 Опубликовано: 20.07.2017
сетевой протокол. Используется для удаленного управления операционными системами и передачи файлов. Ключевая особенность заключается в том, что SSH шифрует трафик, делая подключения безопасными. По умолчанию, использует 22-й порт. Аббревиатура расшифровывается как Secure Shell.
Программные реализации SSH делятся на серверные и клиентские части. В основном, в качестве сервера применяется OpenSSH, клиентов — OpenSSH (UNIX), PuTTY или SecureCRT (Windows, Linux).
Пользоваться программами довольно просто. Пример подключения по SSH из командной строки Linux:
* где root — учетная запись, из-под которой выполняем подключение; 192.168.0.15 — IP-адрес компьютера, с которым соединяемся. Для получения полного списка ключей можно воспользоваться командой man ssh. Также на русском языке можно ознакомиться с описанием на сайте OpenNET.
Пример аналогичного подключения при помощи PuTTY:

Независимо от операционной системы семейства UNIX (Ubuntu, CentOS, FreeBSD и так далее), для настройки сервера SSH используется конфигурационный файл /etc/ssh/sshd_config. Для Windows также существует реализация сервера — «OpenSSH for Windows», которая позволит подключаться к данной системе для удаленного управления из командной строки (достойной альтернативой могут послужить Powershell или Bitvise SSH Server).
Подробнее об SSH на Википедии
Встречается в статьях
Инструкции:
- Использование playbook и роли в Ansible на примере установки NGINX
- Как настроить SSH на Cisco
- Настройка безопасности Linux с помощью Fail2ban
- Как установить и настроить iRedMail на Rocky Linux или CentOS
- Настройка почтового сервера iRedMail на Ubuntu/Debian
- Как установить и настроить систему виртуализации Proxmox VE
- Настройка синхронизации на CentOS и Ubuntu с Rsync Server
- Настройка аутентификации по SSH через Active Directory на CentOS
- Установка и запуск менеджера управления проектами Taiga на Rocky Linux
- Установка Nginx + PHP + MySQL + PostgreSQL на Astra Linux
- Как установить и использовать сервер хранения секретов Hashicorp Vault
- Как установить и настроить панель управления виртуальными машинами VMmanager
- Установка и настройка FTP-сервера vsFTPd на CentOS 7
- Установка и настройка почтового сервера Zimbra на Linux
Мини-инструкции:
- Установка и базовая настройка Ansible на Linux CentOS или Ubuntu
- Как использовать SCP без пароля
- Как ускорить вход по SSH
- Инструкция по установке VMware Tools на Linux
- Инструкция по установке VMware Tools на FreeBSD
- Как разрешить root заходить по SSH в Ubuntu
- Настройка ограничения chroot для протокола SFTP
- Просмотр и смена расположения файлов базы MySQL / MariaDB
- Как использовать резервные копии iRedMail для восстановления или переноса сервера
- Установка, настройка и использование NGINX Amplify для мониторинга веб-сервера
- Как работать с менеджером рассылки писем PHPLIST
- Установка панели управления ISPmanager на Ubuntu или CentOS
- Установка и настройка LDAP сервера FreeIPA на Linux CentOS
- Установка и настройка CRM Битрикс24 на Linux CentOS
- Как установить драйвер для Windows на гипервизоре KVM
- Как настроить кластер гипервизоров Proxmox Virtual Enviroment
- Как работать с менеджером пакетов dnf/yum в операционной системе Linux CentOS
- Синхрониация каталогов в Linux с помощью Lsyncd
- Как работать с pipeline в Jenkins — подготовка системы, пример Groovy-скрипта
- Как настроить балансировку http-запросов в веб-сервере NGINX
- Как собрать установочный RPM-пакет для веб-сервера NGINX в Linux CentOS
- Шпаргалка по работе с системой управления конфигурациями Ansible
- Как установить на CentOS и выполнить пробный запуск программы jmeter
- Настройка аутентификации пользователей FreeIPA на сервере OpenVPN
- Хранение и управление паролями PostgreSQL через Hashicorp Vault
- Установка второго сервера FreeIPA с настройкой репликации
- Как установить и настроить кластер Hadoop на Linux Ubuntu
- Как установить программный брокер Kafka на Linux и выполнить базовые команды
- Как с помощью Consul Connect развернуть Service Mesh
- Как установить и настроить NATS сервер на Linux
- Установка, настройка и использование почтового шлюза Proxmox Mail Gateway
Вопросы и ответы:
Описание программ:
Примеры скриптов:
- Скрипт php для создания почтового ящика в iRedMail
- Использование terraform для работы с виртуальными машинами провайдера VK Cloud
SSH-доступ
SSH (Secure SHell) — это сетевой протокол, позволяющий соединяться с удалённым сервером и выполнять на нём команды, загружать файлы. Ключевой особенностью является шифрование передаваемой информации. По умолчанию на хостинге используется командный интерпретатор bash.
- Получение справочной информации
- Перемещение по файловой системе
- Просмотр содержимого каталога
- Создание и удаление файлов и каталогов
- Просмотр и редактирование содержимого файлов
- Копирование и перемещение файлов
- Изменение прав доступа
- Управление процессами
- Работа с архивами
- Поиск файлов
1. Информация для подключения
Информацию для подключения к серверу по SSH и SFTP вы можете получить в разделе FTP и SSH панели управления хостингом.
.png)
- Адрес сервера (хост): ssh.login.nichost.ru, где «login» — уникальное имя услуги хостинга (указано в верхней правой части панели управления).
- Имя SSH-пользователя (логин): login.
- Для получения пароля SSH-пользователя нажмите кнопку Сбросить пароль. Новый пароль будет отображен в всплывающем окне. Для отправки пароля на ваш контактный адрес электронной почты, установите галочку Выслать пароль на почту.
Чтобы соединиться по SSH с сервером хостинга, установите на компьютер ssh-клиент . Для загрузки файлов на хостинг используйте SFTP-клиент.
Если при соединении по SSH выводится сообщение «cannot allocate memory», это означает, что на вашем хостинге занята вся доступная по тарифу память. Чтобы ее освободить, вы можете временно остановить веб-сервер и отключить задания планировщика заданий в разделе Управление веб-сервером панели управления хостингом. Дополнительно рекомендуем ознакомиться со статьей Использование ресурсов хостинга.
2. Работа с хостингом с помощью Midnight Commander
Midnight Commander — двухпанельный файловый менеджер. Имеет встроенный текстовый редактор.
.png)
Для запуска Midnight Commander подключитесь к хостингу по SSH и введите команду
Основные горячие клавиши:
- F1: Справка;
- F3: Встроенный просмотрщик файлов;
- F4: Встроенный текстовый редактор;
- F5: Копировать файл;
- F6: Переместить (переименовать) файл;
- F8: Удалить файл;
- F9: Вывести выпадающее меню;
- F10: Выход из программы;
- Tab: Переход между панелями;
- Insert: Пометить файл для операций с несколькими файлами, например, для копирования.
3. Работа с хостингом из командной строки
Получение справочной информации
Для получения справочной информации по интересующей команде command наберите в командной строке:
для завершения работы со справкой нажмите «q».
Краткую справку по команде обычно можно получить, запустив ее с параметром —help или -h:
Перемещение по файловой системе
Вывести текущий каталог:
Перейти в домашний каталог пользователя:
Перейти в каталог tmp, размещенный в текущем каталоге:
Перейти в каталог по полному пути /home/login/sitename.ru/docs (корневой каталог сайта sitename.ru):
Перейти в родительский каталог (на уровень выше):
Перейти в предыдущий каталог:
Создание и удаление файлов и каталогов
Создать новый каталог foo в текущем каталоге:
Создать структуру каталогов foo/bar/baz в текущем каталоге:
mkdir -p foo/bar/baz
Удалить каталог foo в текущем каталоге. Каталог должен быть пуст:
Удалить каталог foo со всеми файлами и подкаталогами:
Создать пустой файл foo:
Удалить файл foo:
Просмотр и редактирование содержимого файлов
Просмотреть содержимое текстового файла (лог-файла сайта) (Для выхода нажмите «q»):
Открыть файл foo в текстовом редакторе:
Копирование и перемещение файлов
Копировать файл foo в файл bar:
Скопировать содержимое каталога old в каталог new:
Переименовать файл foo в файл bar:
Переместить файл foo в существующий каталог bar под именем baz:
Изменение прав доступа
Рекомендуемые права доступа на хостинге для файлов 644 (rw-rw-rw-), для каталогов 755 (rwxr-xr-x).
Сделать файл foo исполняемым:
Сделать файл foo доступным только для чтения:
Изменение прав доступа для всех каталогов, вложенных в каталог foo на 755:
find foo -type d -exec chmod 755 {} \;
Изменение прав доступа для всех вложенных в каталог foo файлов на 644:
find foo -type f -exec chmod 644 {} \;
Управление процессами
Показать информацию о процессах в реальном времени (Для выхода нажмите «q»):
Показать подробную информацию о всех выполняющихся процессах:
Завершить работу процесса по его идентификатору процесса (PID) 1234:
Завершить работу процесса по его имени:
Работа с архивами
Создать архив каталога docs:
tar -czf archive.tar.gz docs
Распаковать архив archive.tar.gz:
tar -xzf archive.tgz
Распаковать архив archive.zip:
Распаковать архив archive.rar:
unrar x archive.rar
Распаковать архив archive.gz:
Поиск файлов
Найти среди файлов сайта содержащие текст «login.mysql» (адрес сервера для доступа к базе данных):
grep -R «login.mysql» sitename.ru/docs
Найти в текущем каталоге и подкаталогах файлы с именем index.php:
Как установить и настроить SSH
В этой статье мы расскажем, как работает SSH-клиент, как его установить, а также как подключиться к Ubuntu и Windows 10 по SSH. Но давайте сначала разберёмся, что такое SSH.
Что такое SSH
SSH (Secure Shell) — сетевой протокол прикладного уровня, который позволяет управлять операционной системой и выполнять функцию тунеллирования TCP-соединения. Работа SSH построена на взаимодействии 2-х компонентов: SSH-сервера и SSH-клиента. Подробнее читайте в статье Что такое SSH.
SSH-сервер по умолчанию прослушивает соединения на порту 22, а также требует аутентификации сторон. Есть несколько вариантов проверки соединения:
- по паролю. Используется чаще всего. При таком типе аутентификации между клиентом и сервером создаётся общий секретный ключ: он шифрует трафик;
- с помощью ключевой пары. Предварительно генерируется открытый и закрытый ключ. На устройстве, с которого нужно подключиться, хранится закрытый ключ, а на сервере — открытый. При подключении файлы не передаются, система только проверяет, что устройство имеет доступ не только к открытому, но и к закрытому ключу.
- по IP-адресу. При подключении система идентифицирует устройство по IP-адресу. Такой тип аутентификации небезопасен и используется редко.
OpenSSH (Open Secure Shell) — набор программ, который позволяет шифровать сеансы связи в сети. При таких сеансах используется протокол SSH.
OpenSSH включает в себя компоненты:
- ssh,
- scp,
- sftp,
- sshd,
- sftp-server,
- ssh-keygen,
- ssh-keysign,
- ssh-keyscan,
- ssh-agent,
- ssh-add.
Этот набор ПО может аутентифицировать пользователей с помощью таких встроенных механизмов как:
- публичные ключи,
- клавиатурный ввод: пароли и запрос-ответ,
- Kerberos/GSS-API.
Установка OpenSSH на Ubuntu 22.04
В качестве примера мы рассмотрим установку Ubuntu 22.04. Настройка SSH Ubuntu Server 20.04 версии проходит аналогично.
При первой установке Ubuntu подключение по SSH запрещено по умолчанию. Включить доступ по SSH можно, если установить OpenSSH.
Откройте терминал с помощью комбинации клавиш Ctrl + Alt + T.
Обновите репозиторий командой:
sudo apt update