SSH (Secure Shell) — это криптографический сетевой протокол, используемый для безопасного взаимодействия с удалёнными компьютерами через незащищённые сети. SSH обеспечивает надёжное шифрование данных и защищённое подключение к удалённому серверу.
С помощью SSH можно управлять удалённой системой через командную строку, а также безопасно передавать файлы между компьютерами. Это один из ключевых инструментов системных администраторов и разработчиков при работе с серверами.
SSH-ключ в операционных системах Windows, macOS или Linux является одним из наиболее безопасных способов аутентификации при подключении к удалённому серверу. Основное преимущество такого метода — высокая устойчивость к взлому, в отличие от обычного пароля.
Для организации защищённого подключения по SSH генерируются две части ключа:
~/.ssh/authorized_keys). Это последовательность символов, с помощью которой производится шифрование данных при подключении к серверу.Рекомендуется для надёжности отключить возможность входа по паролю и разрешить доступ только по SSH-ключам. При попытке подключения SSH-клиент использует закрытый ключ для проверки совпадения с открытым ключом на сервере. Если ключи совпадают, вход осуществляется без ввода пароля.
Использование SSH-ключей обеспечивает надёжное и безопасное соединение между клиентом и сервером.
Для повышения безопасности вашего сервера необходимо правильно настроить доступ по SSH. Работа непосредственно от имени root не рекомендуется, так как root-пользователь имеет полный доступ ко всем функциям системы, что увеличивает риск ошибок, потери данных и появления уязвимостей.
Рекомендуется использовать команду sudo для выполнения административных операций, а повседневную работу вести под обычным пользователем с правами администратора. По умолчанию, для безопасности, подключение по SSH к root-пользователю следует запретить и разрешить вход только под вашим пользователем с правами sudo.
При необходимости можно получить доступ к правам root с помощью sudo или вручную переключиться на root-пользователя.
Войдите на сервер по SSH и выполните обновление пакетов:
sudo apt update && sudo apt upgrade
Всегда обновляйте систему перед установкой нового программного обеспечения. После обновления перезапустите сервер и войдите в систему под своим пользователем.
Если по каким-то причинам у вас нет созданного пользователя, переключитесь на суперпользователя (root):
sudo -su
Создайте нового пользователя командой (замените твой_пользователь на имя нового пользователя):
adduser твой_пользователь
Далее следуйте инструкциям на экране для создания пароля и настройки информации о пользователе.
Чтобы предоставить новому пользователю административные права, добавьте его в группу sudo.
Классический способ через gpasswd:
gpasswd -a твой_пользователь sudo
Современный способ через usermod:
usermod -aG sudo твой_пользователь
Оба варианта добавляют пользователя в группу sudo и дают одинаковый результат. Разница в том, что gpasswd — инструмент управления группами, а usermod — инструмент управления пользователями. usermod -aG считается стандартным подходом и используется чаще в современных руководствах.
Переключитесь на нового пользователя:
su - твой_пользователь
Генерация пары ключей SSH (Secure Shell) — это важный шаг для обеспечения безопасного и аутентифицированного соединения с удалённым сервером. Ключи создаются на вашем компьютере и используются для подтверждения вашей личности при подключении к серверу.
Для генерации ключей в Linux и macOS откройте терминал. В Windows используйте PowerShell или WSL (Windows Subsystem for Linux).
Введите одну из следующих команд для генерации пары ключей SSH (замените твоя_почта@example.com на свой адрес электронной почты):
ssh-keygen -t ed25519 -C "твоя_почта@example.com"
Также можно сгенерировать ключи без указания email:
ssh-keygen -t ed25519
Для большей совместимости можно использовать RSA (менее безопасно, но поддерживается старыми системами):
ssh-keygen -t rsa -b 4096
После ввода команды будет предложено указать путь для сохранения ключей (по умолчанию — директория ~/.ssh). Нажмите Enter для выбора значения по умолчанию, либо укажите свой путь.
Далее, для повышения безопасности, можно задать пароль (passphrase), который будет использоваться для шифрования приватного ключа. Этот шаг необязателен, но рекомендуется.
В результате генерации в папке ~/.ssh появятся два файла: открытый ключ (например, id_ed25519.pub или id_rsa.pub) и закрытый ключ (например, id_ed25519 или id_rsa). Открытый ключ можно передавать администратору сервера или копировать на удалённый сервер, а закрытый ключ должен храниться только на вашем компьютере и никогда не передаваться другим лицам.
Теперь у вас есть пара SSH-ключей, которые можно использовать для безопасного подключения к серверу.
Более подробно о генерации и использовании SSH-ключей можно узнать здесь:
How-To Geek: How to Generate SSH Keys in Windows 10 and Windows 11
SSH Academy: ssh-keygen
Теперь необходимо скопировать открытый ключ id_rsa.pub на виртуальную машину для организации защищённого входа по SSH. Сначала подключитесь к вашей виртуальной машине с помощью SSH, используя команду:
ssh your_user@ip
Замените your_user@ip на имя вашего пользователя и IP-адрес виртуальной машины. Например:
ssh [email protected]
После входа в систему вы окажетесь в домашнем каталоге пользователя. Для проверки содержимого домашней директории выполните команду:
ls -la
В этом каталоге должна существовать папка .ssh. Если она отсутствует, создайте её командой:
mkdir .ssh
Знак точки в начале имени (.ssh) указывает на то, что это скрытая директория.

Необходимо установить для папки .ssh строгие права доступа для защиты ваших ключей. Выполните команду:
chmod 700 .ssh
Данная команда разрешает доступ к директории только её владельцу.
Для настройки SSH-доступа по ключу на виртуальной машине необходимо создать (или открыть, если уже существует) файл authorized_keys в директории .ssh вашего пользователя. Используйте текстовый редактор nano:
nano .ssh/authorized_keys
Теперь откройте на своём локальном компьютере файл с открытым ключом. Для этого выполните одну из следующих команд (в зависимости от вашей операционной системы):
cat .ssh/id_rsa.pub — для Linux, macOS и новых версий Windows с поддержкой WSL.get-content .ssh/id_rsa.pub — для Windows 7/8 (без WSL).Также можно просто открыть файл id_rsa.pub с помощью любого текстового редактора и скопировать его содержимое.
Скопируйте содержимое открытого ключа и вставьте его в открытый файл authorized_keys на виртуальной машине.
Чтобы сохранить изменения в nano, используйте сочетание клавиш Ctrl+O (сохранить), затем нажмите Enter для подтверждения. Для выхода из редактора — Ctrl+X.
После этого установите корректные разрешения для файла authorized_keys:
chmod 644 .ssh/authorized_keys
Правильные права доступа важны для корректной работы SSH-авторизации.
Существует более удобный способ скопировать открытый ключ на сервер — с помощью специальной команды ssh-copy-id. Эта утилита предназначена для автоматического копирования публичного SSH-ключа в файл ~/.ssh/authorized_keys на удалённом сервере.
Основной синтаксис:
ssh-copy-id -i ~/.ssh/ваш_ключ.pub your_user@your_server
Если не указывать параметр -i, команда ssh-copy-id по умолчанию найдёт и скопирует стандартный публичный ключ ~/.ssh/id_rsa.pub (или id_ed25519.pub, id_ecdsa.pub и т.д., если они существуют).
Как работает ssh-copy-id:
~/.ssh/..pub (обычно id_rsa.pub).~/.ssh/authorized_keys на удалённом сервере (в учётной записи пользователя).После выполнения ssh-copy-id можно подключаться к серверу по SSH без пароля, используя ключи.
Если ключ был создан с нестандартным именем (например, командой ssh-keygen -f ~/.ssh/my_custom_key), обязательно укажите его явно:
ssh-copy-id -i ~/.ssh/my_custom_key.pub user@server
Вкратце:
~/.ssh/id_rsa.pub.~/.ssh/authorized_keys на сервере.Если вы успешно добавили свой открытый SSH-ключ в файл authorized_keys, вы можете входить на сервер без ввода пароля. Однако для полной защиты сервера от несанкционированного доступа рекомендуется полностью отключить вход по паролю. Для этого выполните следующие шаги:
sudo nano /etc/ssh/sshd_config
Port и установите четырёхзначное значение (больше 1024), например:
Port 2222
Это усложнит автоматизированные атаки на стандартный порт 22.
PermitRootLogin и измените на:
PermitRootLogin no
Это повысит безопасность сервера, запретив прямой вход под root.
PasswordAuthentication и установите значение:
PasswordAuthentication no
После этого вход будет возможен только по SSH-ключам.
sudo service ssh restart
или выполните перезагрузку сервера:
sudo reboot

Важно: Перед отключением входа по паролю убедитесь, что вы можете подключаться к серверу по SSH-ключу и через новый порт. В случае ошибки при настройке SSH вы всегда можете получить доступ к консоли вашей виртуальной машины через VirtualBox и исправить конфигурацию.
После внесения изменений в настройки SSH попытка подключиться по стандартному порту больше не будет успешной:
ssh [email protected]

Теперь для подключения необходимо явно указать новый порт (например, 2222):
ssh [email protected] -p 2222

Если подключение по новому порту проходит успешно — настройка завершена корректно. Поздравляем, ваш сервер стал значительно безопаснее!
Если у вас остались вопросы или нужна дополнительная помощь — не стесняйтесь обращаться.