Вы используете SSH неправильно: Конфиги, Туннели и Мультиплексирование

Хватит запоминать IP-адреса

Как выглядит типичный день системного администратора? ssh root@192.168.1.14… пароль… ошибка… ssh -i ~/.ssh/my_key.pem ubuntu@ec2-54-23-11-12.compute.amazonaws.com

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

Сегодня мы перейдем от уровня «ввел IP и зашел» к уровню «SSH Power User».


1. Магия ~/.ssh/config: Забудьте про IP и ключи

Это главная суперсила. Вместо того чтобы запоминать IP, пользователей и пути к ключам для каждого из 50 серверов, вы описываете их один раз в файле конфигурации.

Откройте (или создайте) файл ~/.ssh/config на своей локальной машине:

Bash

nano ~/.ssh/config

И добавьте туда свои серверы:

Фрагмент кода

# Обычный сервер
Host web01
    HostName 192.168.10.5
    User debian
    Port 2222

# Сервер AWS с ключом
Host aws-prod
    HostName ec2-55-12-13-14.compute.amazonaws.com
    User ubuntu
    IdentityFile ~/.ssh/aws_prod_key.pem

# Глобальные настройки для всех хостов
Host *
    # Отключаем проверку ключей хоста (для тестовых сред, где IP часто меняются)
    # StrictHostKeyChecking no
    # Держим соединение живым (чтобы не отваливалось при простое)
    ServerAliveInterval 60

Результат: Вместо: ssh -i ~/.ssh/aws_prod_key.pem -p 22 ubuntu@ec2-55-12-13-14.compute.amazonaws.com Вы пишете: ssh aws-prod

Работает также для scp и rsync: scp file.txt aws-prod:/tmp/


2. SSH-Туннели: Ваш личный VPN

Представьте ситуацию: У вас есть сервер БД (MySQL/PostgreSQL), который слушает порт 3306 или 5432. Но этот порт закрыт фаерволом снаружи (и это правильно!). Доступ есть только по SSH (22 порт). Вам нужно подключиться к БД через DBeaver или HeidiSQL с вашего ноутбука.

«Админ» временно открывает порт 3306 для мира (опасно!) или ставит VPN. «Архитектор» использует Local Port Forwarding (Локальный проброс портов).

Команда:

Bash

# Синтаксис: -L [ЛокальныйПорт]:[КудаИдем]:[УдаленныйПорт]
ssh -L 3306:127.0.0.1:3306 web01

Что происходит: SSH открывает порт 3306 на вашем ноутбуке. Любой запрос, который вы пошлете на свой локальный 3306, будет зашифрован, передан через SSH-туннель на сервер web01 и там «выплюнут» на 127.0.0.1:3306.

Теперь в DBeaver вы подключаетесь к localhost:3306 — и вы в базе. Безопасно, зашифровано, без VPN.


3. Dynamic Port Forwarding: Прокси за 5 секунд

Ситуация: Вы в кафе или отеле с открытым Wi-Fi. Вы не хотите, чтобы кто-то перехватывал ваш трафик. Или вам нужно зайти на внутренний корпоративный сайт, который доступен только из офисной сети.

Используем SSH как SOCKS-прокси.

Команда:

Bash

# -D [ЛокальныйПорт]
# -N (не выполнять команду, просто держать соединение)
ssh -D 8080 -N office-server

Теперь идете в настройки браузера (или плагина типа FoxyProxy) и указываете SOCKS5 прокси: 127.0.0.1, порт 8080.

Результат: Весь ваш браузерный трафик идет через зашифрованный туннель до office-server и выходит в интернет оттуда. Для всего мира вы теперь сидите в офисе.


4. Мультиплексирование: Ускоряем подключение

Вы замечали, что ssh подключается не мгновенно? Рукопожатие, обмен ключами… Если вы запускаете скрипт, который делает 10 подключений подряд (например, в цикле), это занимает время.

SSH умеет использовать одно установленное TCP-соединение для нескольких сессий. Это называется ControlMaster.

Добавьте в ~/.ssh/config:

Фрагмент кода

Host *
    ControlMaster auto
    ControlPath ~/.ssh/sockets/%r@%h-%p
    ControlPersist 600

  • ControlMaster auto: Пытаться использовать мастер-соединение.
  • ControlPath: Где хранить сокет (файл связи). (Создайте папку mkdir ~/.ssh/sockets).
  • ControlPersist 600: Держать соединение открытым в фоне 600 секунд (10 минут) после выхода.

Результат: Первое подключение ssh web01 займет обычные 1-2 секунды. Второе, третье и десятое подключение (в соседнем окне терминала) произойдет мгновенно (0 секунд), потому что канал уже открыт.


Инструмент определяет мастера

SSH — это не просто «черное окно с текстом». Это швейцарский нож для сетевого взаимодействия.

Настроив ~/.ssh/config один раз, вы сэкономите себе часы ввода команд в год. Освоив туннели (-L и -D), вы перестанете зависеть от VPN и открытых портов. Включив мультиплексирование, вы ускорите свои скрипты и Ansible-плейбуки.

Перестаньте быть «админом, который печатает». Станьте «архитектором, который управляет».


Теги: #linux #ssh #security #networking #sysadmin #lifehack #cli #туннели

Хотите стать архитектором будущего, а не просто админом? Эта статья — лишь верхушка айсберга. В нашем Telegram-канале «Admin Future» мы каждый день публикуем системные гайды, готовые скрипты, AI-лайфхаки и чеклисты, которые не найти в Google. Мы не просто постим команды — мы строим библиотеку знаний для тех, кто хочет расти от админа до архитектора. Подписывайтесь и становитесь экспертом: Admin Future

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх