15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать
01.11.2024
1 +1

SSH на виртуальном хостинге: Полное руководство по безопасному управлению сервером

Secure Shell (SSH) — один из самых мощных и необходимых инструментов в арсенале любого системного администратора. Независимо от того, управляете ли вы небольшим личным проектом или запускаете производственное веб-приложение, SSH предоставляет вам зашифрованный, аутентифицированный удаленный доступ к вашему серверу — позволяя вам выполнять команды, передавать файлы и настраивать сервисы без необходимости прикасаться к физической машине.

Это подробное руководство охватывает все, что вам нужно знать о работе с SSH в среде виртуального хостинга: от вашего первого подключения до защиты вашей установки от атак перебора.

Оглавление

  1. Что такое SSH и почему это важно?
  2. Предварительные требования перед подключением
  3. Как получить доступ к вашему серверу через SSH
  4. Основные команды SSH для управления сервером
  5. Защита вашей конфигурации SSH
  6. Аутентификация по ключам SSH: правильный способ входа
  7. Безопасная передача файлов с помощью SCP и SFTP
  8. Советы по устранению неполадок SSH
  9. Заключение

1. Что такое SSH и почему это важно? {#what-is-ssh}

SSH (Secure Shell) — это криптографический сетевой протокол, который создает зашифрованный туннель между вашей локальной машиной (клиентом) и удаленным сервером. В отличие от более старых протоколов, таких как Telnet или FTP, SSH шифрует весь трафик — включая учетные данные — что делает практически невозможным для злоумышленника перехватить конфиденциальные данные при передаче.

SSH является стандартным методом для:

  • Удаленного доступа к командной строке — выполнение любой команды Linux/Unix на вашем сервере, как если бы вы сидели перед ним
  • Безопасной передачи файлов — перемещение файлов между машинами с использованием SCP или SFTP
  • Туннелирования и переадресации портов — безопасная маршрутизация других протоколов через SSH-соединение
  • Автоматизированных развертываний и скриптов — конвейеры CI/CD, задания cron и скрипты резервного копирования полагаются на SSH
  • Управления веб-серверами и приложениями — настройка Nginx, Apache, MySQL и многого другого

Если вы используете план VPS Hosting или Dedicated Server, SSH почти наверняка является вашим основным интерфейсом для повседневного администрирования.

2. Предварительные требования перед подключением {#prerequisites}

Перед установкой вашего первого SSH-соединения убедитесь, что у вас есть следующее:

ТребованиеДетали
IP-адрес сервераПредоставляется в панели управления хостингом или приветственном письме
Имя пользователя SSHОбычно root для свежего VPS или пользовательский пользователь в управляемых средах
Пароль или ключ SSHУстановлен при подготовке или отправлен по электронной почте
SSH-клиентВстроен в Linux/macOS; PuTTY или Windows Terminal на Windows
Порт SSHПо умолчанию 22, но может быть настроен для безопасности

> Примечание: Если вы используете план Shared Web Hosting, доступ SSH может быть ограничен или требовать явной активации в панели управления. Проверьте у вашего поставщика услуг.

3. Как получить доступ к вашему серверу через SSH {#accessing-via-ssh}

Шаг 1: Откройте терминал или SSH-клиент

  • Linux / macOS: Откройте встроенное приложение Terminal
  • Windows 10/11: Используйте Windows Terminal, PowerShell или Command Prompt (все включают встроенный SSH-клиент)
  • Windows (устаревшая версия): Загрузите PuTTY как бесплатный SSH-клиент

Шаг 2: Подключитесь к вашему серверу

Используйте следующий синтаксис:

ssh username@your_server_ip

Пример:

ssh root@203.0.113.45

Если ваш сервер использует нестандартный порт (подробнее о том, почему вы должны его изменить, позже), укажите его с флагом -p:

ssh username@your_server_ip -p 2222

Шаг 3: Проверьте отпечаток хоста

При первом подключении к новому серверу SSH отобразит сообщение вроде этого:

The authenticity of host '203.0.113.45 (203.0.113.45)' can't be established.
ED25519 key fingerprint is SHA256:abc123...
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Введите yes и нажмите Enter. SSH сохранит отпечаток сервера в ваш файл ~/.ssh/known_hosts. При будущих подключениях он автоматически проверит личность сервера — предупредив вас, если что-то изменится (что может указывать на атаку «человек посередине»).

Шаг 4: Аутентификация

Введите свой пароль при появлении запроса. Обратите внимание, что терминал не будет отображать никакие символы при вводе — это нормальное поведение в целях безопасности.

После аутентификации вы увидите приглашение командной строки вашего сервера, обычно что-то вроде:

root@hostname:~#

Вы теперь подключены и можете начать управлять вашим сервером.

4. Основные команды SSH для управления сервером {#essential-commands}

После подключения у вас есть полный доступ к командной строке Linux. Вот наиболее важные команды для управления средой виртуального хостинга:

Операции с файлами и каталогами

# List files and directories with details
ls -la

# Change to a specific directory
cd /var/www/html

# Create a new directory
mkdir my_project

# Remove a file
rm filename.txt

# Remove a directory and its contents
rm -rf /path/to/directory

# Copy a file
cp source.txt destination.txt

# Move or rename a file
mv oldname.txt newname.txt

Просмотр и редактирование файлов

# View file contents
cat /etc/nginx/nginx.conf

# View large files page by page
less /var/log/nginx/access.log

# Edit a file with nano (beginner-friendly)
nano /etc/ssh/sshd_config

# Edit a file with vim (advanced)
vim /etc/nginx/sites-available/default

Мониторинг системы

# Check disk usage (human-readable)
df -h

# Check memory usage
free -m

# Real-time process monitor
top

# Enhanced process monitor (install if needed)
htop

# Check running services
systemctl status nginx

# View recent system logs
journalctl -xe

Управление пакетами (Ubuntu/Debian)

# Update package list
sudo apt update

# Upgrade installed packages
sudo apt upgrade -y

# Install a package
sudo apt install package-name

# Remove a package
sudo apt remove package-name

Диагностика сети

# Check open ports and listening services
ss -tulnp

# Test connectivity to a host
ping google.com

# Trace the network route to a host
traceroute google.com

# Check your server's public IP
curl ifconfig.me

5. Защита вашей конфигурации SSH {#hardening-ssh}

Конфигурация SSH по умолчанию функциональна, но не оптимально защищена. Поскольку SSH открыт для интернета, он является постоянной мишенью для автоматизированных атак перебора. Следующие шаги значительно сокращают вашу поверхность атаки.

Все изменения вносятся в файл конфигурации демона SSH:

sudo nano /etc/ssh/sshd_config

После внесения любых изменений всегда перезагружайте сервис SSH:

sudo systemctl reload sshd

> ⚠️ Критическое предупреждение: Перед внесением изменений в конфигурацию SSH всегда держите открытым второй сеанс терминала и подключенным. Если вы неправильно настроите SSH и потеряете доступ, вам может потребоваться использовать консоль экстренного доступа вашего поставщика хостинга для восстановления.

Шаг 1: Измените порт SSH по умолчанию

Порт 22 — это порт SSH по умолчанию и постоянно сканируется автоматизированными ботами. Изменение его на высокий нестандартный порт не остановит решительного злоумышленника, но это резко снижает шум от автоматизированных сканирований.

В /etc/ssh/sshd_config найдите и измените:

# Before:
#Port 22

# After:
Port 2222

Удалите # для раскомментирования строки и установите выбранный вами порт (используйте любое число от 1024 до 65535, которое еще не используется).

Важно: Если вы используете брандмауэр (а вы должны это делать), разрешите новый порт перед перезагрузкой SSH:

# UFW (Ubuntu/Debian)
sudo ufw allow 2222/tcp
sudo ufw deny 22/tcp

# firewalld (CentOS/RHEL)
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload

Шаг 2: Отключите вход от администратора

Прямой вход в качестве root через SSH — это значительный риск безопасности. Вместо этого создайте обычную учетную запись пользователя и используйте sudo для административных задач.

В /etc/ssh/sshd_config:

# Before:
PermitRootLogin yes

# After:
PermitRootLogin no

Перед отключением входа администратора убедитесь, что вы:

  1. Создали пользователя без прав администратора: adduser myuser
  2. Предоставили привилегии sudo: usermod -aG sudo myuser
  3. Проверили, что вы можете войти как этот пользователь в отдельном сеансе

Шаг 3: Ограничьте попытки входа

Добавьте эти директивы, чтобы снизить эффективность атак перебора:

# Maximum authentication attempts per connection
MaxAuthTries 3

# Maximum concurrent unauthenticated connections
MaxStartups 10:30:60

# Disconnect idle sessions after 5 minutes
ClientAliveInterval 300
ClientAliveCountMax 2

Шаг 4: Ограничьте доступ SSH определенным пользователям

Если только определенные пользователи нуждаются в доступе SSH, явно добавьте их в список разрешений:

AllowUsers myuser deployuser

Шаг 5: Отключите аутентификацию по паролю (после настройки ключей SSH)

После настройки аутентификации по ключам SSH (см. следующий раздел) полностью отключите вход на основе пароля:

PasswordAuthentication no
ChallengeResponseAuthentication no

Это единственное изменение устраняет весь класс атак перебора пароля.

6. Аутентификация по ключам SSH: правильный способ входа {#ssh-key-authentication}

Ключи SSH — это криптографические пары ключей — приватный ключ, который остается на вашей локальной машине, и открытый ключ, который находится на сервере. Аутентификация работает путем доказательства того, что вы владеете приватным ключом, без его передачи. Это намного безопаснее, чем пароли.

Шаг 1: Создайте пару ключей SSH

Запустите это на вашей локальной машине (не на сервере):

ssh-keygen -t ed25519 -C "your_email@example.com"

> Почему Ed25519? Это быстрее и безопаснее, чем старый алгоритм RSA. Если ваша система его не поддерживает, используйте ssh-keygen -t rsa -b 4096 вместо этого.

Вам будет предложено:

  • Выбрать расположение файла — нажмите Enter, чтобы принять значение по умолчанию (~/.ssh/id_ed25519)
  • Установить парольную фразу — настоятельно рекомендуется; это шифрует ваш приватный ключ, чтобы он был бесполезен при краже

Это создает два файла:

  • ~/.ssh/id_ed25519 — ваш приватный ключ (никогда не делитесь этим)
  • ~/.ssh/id_ed25519.pub — ваш открытый ключ (это идет на сервер)

Шаг 2: Скопируйте открытый ключ на ваш сервер

Самый простой метод:

ssh-copy-id username@your_server_ip

Или вручную, если ssh-copy-id недоступен:

# On your local machine, display your public key:
cat ~/.ssh/id_ed25519.pub

# On the server, add it to the authorized keys file:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "your_public_key_content" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Шаг 3: Подключитесь, используя ваш ключ SSH

# Standard port
ssh username@your_server_ip

# Custom port
ssh username@your_server_ip -p 2222

SSH автоматически использует ваш ключ. Если вы установили парольную фразу, вам будет предложено ввести ее (это ваша локальная парольная фраза, а не пароль сервера).

Шаг 4: Упростите подключения с помощью файла конфигурации SSH

Если вы управляете несколькими серверами, создайте файл конфигурации SSH, чтобы избежать ввода длинных команд:

nano ~/.ssh/config

Добавьте записи вроде этой:

Host myserver
    HostName 203.0.113.45
    User myuser
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

Host staging
    HostName 203.0.113.100
    User deploy
    Port 22
    IdentityFile ~/.ssh/id_ed25519

Теперь вы можете подключиться просто:

ssh myserver

7. Безопасная передача файлов с помощью SCP и SFTP {#file-transfers}

SSH включает два метода безопасной передачи файлов: SCP (Secure Copy Protocol) для быстрых передач и SFTP (SSH File Transfer Protocol) для интерактивных сеансов.

SCP — быстрые передачи файлов

Скопируйте файл с вашей локальной машины на сервер:

scp /path/to/local/file.txt username@your_server_ip:/path/to/remote/directory/

Скопируйте файл с сервера на вашу локальную машину:

scp username@your_server_ip:/path/to/remote/file.txt /path/to/local/directory/

Скопируйте весь каталог рекурсивно:

scp -r /path/to/local/folder username@your_server_ip:/path/to/remote/

Используя пользовательский порт:

scp -P 2222 file.txt username@your_server_ip:/destination/

> Примечание: SCP использует -P (прописные буквы) для порта, в отличие от SSH, который использует -p (строчные буквы).

SFTP — интерактивное управление файлами

SFTP предоставляет интерактивную оболочку для просмотра и управления удаленными файлами:

sftp username@your_server_ip

После подключения используйте эти команды:

# List remote files
ls

# List local files
lls

# Change remote directory
cd /var/www/html

# Change local directory
lcd ~/Downloads

# Upload a file
put localfile.txt

# Download a file
get remotefile.txt

# Exit
bye

Для графического SFTP-клиента инструменты, такие как FileZilla или Cyberduck, подключаются через SFTP и предоставляют интерфейс перетаскивания — идеально, если вы предпочитаете не использ

15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать