Шпаргалка по SSH
Это перевод оригинальной статьи SSH Cheat Sheet.
Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.
Практическое, удобное для копирования и вставки руководство по SSH для инженеров Linux, системных администраторов, администраторов баз данных и SRE-специалистов.
Часть 1 — Основы SSH (для всех)
Основные принципы использования SSH
ssh user@server_ip
Подключитесь к удалённому серверу, используя стандартный порт 22.
ssh hostname
Используются параметры из ~/.ssh/config, если они определены.
SSH с пользовательским портом и пользователем
ssh -p 2222 user@server_ip
Укажите нестандартный порт SSH.
ssh user@hostname
Войдите в систему под конкретным пользователем.
Аутентификация по SSH-ключу
Сгенерируйте SSH-ключ
ssh-keygen -t ed25519
Скопируйте открытый ключ на сервер.
ssh-copy-id user@server_ip-copy-id user@server_ip
После этого ввод пароля при подключении больше не требуется.
Советы по работе с конфигурационными файлами SSH (настоятельно рекомендуется)
nano ~/.ssh/config
Host prod-db HostName 10.10.10.20 User postgres Port 22 IdentityFile ~/.ssh/id_ed25519
ssh prod-db # Cleaner # Faster # Less mistakes
SSH-туннелирование и переадресация портов
Локальная переадресация портов
ssh -L 5432:localhost:5432 user@server_ip
Получите доступ к удаленной базе данных PostgreSQL так, будто он запущен локально.
Удалённая переадресация портов
ssh -R 9000:localhost:3000 user@server_ip
Предоставьте удаленному компьютеру доступ к локальному сервису.
Динамическая переадресация портов (SOCKS-прокси)
ssh -D 8080 user@server_ip
Полезно для безопасного просмотра веб-страниц и настройки прокси-серверов.
Копирование файлов с помощью SCP и RSYNC
Копирование файла на удаленный сервер
scp file.txt user@server_ip:/path/
Копирование директории
scp -r mydir user@server_ip:/path/
Более быстрый и надёжный способ (рекомендуется)
rsync -avz file.txt user@server_ip:/path/
Отладка SSH-подключений
ssh -v user@server_ip
ssh -vvv user@server_ip
Проверьте, какой ключ используется:
ssh -i ~/.ssh/mykey user@server_ip
Лучшие практики безопасности
Отключить аутентификацию по паролю
Использовать SSH-ключи
Сменить стандартный порт
Использовать Fail2Ban
Ограничить доступ пользователей черезAllowUsers
PasswordAuthentication no PermitRootLogin no
sudo systemctl restart sshd
Часть 2 — Объяснение параметров SSH (от новичка до продвинутого)
В этом разделе простыми словами объясняются параметры командной строки SSH. Для понимания этой части вам не потребуются предварительные знания SSH.
Напоминание о базовом синтаксисе
ssh [options] user@host
- user → имя пользователя удаленного Linux
- host → IP-адрес или имя хоста сервера
- options → параметры поведения SSH (что мы объясним ниже)
Основные и наиболее часто используемые опции (необходимо знать)
-p → Порт
ssh -p 2222 user@server
Подключение к пользовательскому SSH-порту.
Порт SSH по умолчанию = 22.
Часто меняется из соображений безопасности
Представьте, что порт — это номер двери на сервере.
-l → Имя пользователя
ssh -l postgres server_ip
Указывает, от имени какого пользователя следует войти в систему. То
же самое, что и:
ssh postgres@server_ip
-i → Файл идентификации (SSH-ключ)
ssh -i ~/.ssh/id_ed25519 user@server
Указывает SSH, какой закрытый ключ использовать.
Полезно, когда у вас несколько ключей SSH.
-v, -vv, -vvv → Подробный режим / Режим отладки
ssh -v user@server
Отображает этапы подключения.
Помогает отлаживать:
Чем больше v, тем больше деталей.
-F → Пользовательский файл конфигурации
ssh -F myconfig user@server
Используйте нестандартный файл конфигурации SSH.
По умолчанию используется:
~/.ssh/config
Параметры аутентификации и безопасности
-o → Пользовательская опция SSH
ssh -o StrictHostKeyChecking=no user@server
Передайте любые расширенные настройки SSH вручную.
Эквивалентно параметрам из ssh_config
-o PasswordAuthentication=no -o ConnectTimeout=5
-A → Переадресация агента SSH
ssh -A user@server
Переадресация локальных SSH-ключей на удаленный сервер.
Используется для промежуточных серверов.
Использовать с осторожностью (риск безопасности на ненадежных серверах).
-a → Отключить переадресацию агента
ssh -a user@server
Более безопасный вариант по умолчанию:
Явно отключает переадресацию ключей.
-K → Аутентификация GSSAPI
ssh -K user@server
Используется в средах Kerberos / корпоративных средах.
Переадресация и туннелирование
-L → Переадресация локальных портов
ssh -L 5432:localhost:5432 user@server
Доступ к удалённому сервису локально.
Очень распространён в:
-R → Удалённая переадресация портов
ssh -R 8080:localhost:3000 user@server
Предоставить удалённому серверу доступ к локальному сервису
-D → Динамическая переадресация портов (SOCKS-прокси)
ssh -D 1080 user@server
Создает SOCKS-прокси.
Используется для:
-W → Переадресация стандартного ввода/вывода
ssh -W host:port user@server
В основном используется с ProxyJump.
Jump-хосты и несколько серверов
-J → Jump Host (Bastion Server)
ssh -J user@jumpserver user@target
Подключение через другой сервер.
Современная альтернатива сложным туннелям.
Управление сессией
-N → без выполнения команд
ssh -N -L 5432:localhost:5432 user@server
Только открытый туннель.
Доступ к оболочке запрещен.
-T → Отключить псевдо-TTY
ssh -T user@server
Используется в скриптах.
Нет интерактивного терминала.
-t → Принудительно включить TTY
ssh -t user@server "sudo systemctl restart postgresql"
Фон и управление
-f → Фоновый режим
ssh -f -N -L 5432:localhost:5432 user@server
Запуск SSH в фоновом режиме.
Идеально подходит для туннелей.
-S → control socket
ssh -S /tmp/ssh.sock user@server
Используется при совместным использованием соединений.
-O → Команды управления
ssh -O exit user@server
Управление существующим SSH-соединением
Шифрование и алгоритмы
-c → Шифр
ssh -c aes256-gcm@openssh.com user@server
-m → MAC-алгоритм
ssh -m hmac-sha2-256 user@server
алгоритм аутентификации сообщений
-Q → Запрос поддерживаемых алгоритмов
ssh -Q cipher ssh -Q mac
Выводит список поддерживаемых алгоритмов.
Параметры сетевого уровня
-B → Привязка к сетевому интерфейсу
ssh -B eth0 user@server
Принудительно направляет SSH-трафик через указанный сетевой интерфейс.
-b → Исходный адрес
ssh -b 192.168.1.10 user@server
Использует конкретный локальный IP-адрес в качестве источника соединения.
Золотое правило (совет для новичков)
Если команда SSH кажется длинной или пугающей, перенесите её в ~/.ssh/config и упростите себе жизнь.SSH — это больше, чем просто способ подключения к серверу; это мощный инструмент для безопасного доступа, автоматизации и устранения неполадок. Если вы понимаете основы, вы можете безопасно управлять любой системой Linux. Если вы освоите параметры, вы сможете уверенно работать со сложными конфигурациями, такими как туннели, бастионные хосты и производственные среды.
На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.