Данные живут на серверах, а не на вашем ноутбуке. SSH это способ открыть терминал на удалённой машине так, будто вы сидите за ней. Инженер данных делает это каждый день: посмотреть логи Airflow, проверить место на диске, пробросить порт до базы.
Как это работает
ssh user@5.42.99.125 # подключиться по адресу
ssh user@dwh.company.ru # или по имени хоста
exit # выйти обратноПервый раз сервер спросит, доверяете ли вы ему, и запомнит отпечаток в ~/.ssh/known_hosts. Дальше либо пароль, либо ключ. Пароли в командах и скриптах неудобны и небезопасны, поэтому взрослый вариант один: ключи.
Ключи
Пара ключей это два файла. Приватный остаётся у вас и никому не показывается. Публичный вы отдаёте администратору, он добавляет его на сервер в ~/.ssh/authorized_keys, и с этого момента вход происходит без пароля.
ssh-keygen -t ed25519 -C "имя@компания" # создать пару, Enter на все вопросы
cat ~/.ssh/id_ed25519.pub # публичный ключ, его можно копировать в письмо
ls -l ~/.ssh # приватный ключ должен быть -rw------- (600)Алиасы в ~/.ssh/config
Вместо ssh de@5.42.99.125 -p 2222 -i ~/.ssh/work_key каждый раз пишут конфиг один раз:
Host dwh
HostName 5.42.99.125
User de
IdentityFile ~/.ssh/id_ed25519После этого достаточно ssh dwh. Алиасы работают и для scp, и для туннелей ниже.
Файлы туда и обратно
scp report.csv dwh:/home/de/reports/ # отправить файл на сервер
scp dwh:/var/log/etl.log ./ # забрать с сервера
rsync -av data/ dwh:/home/de/data/ # синхронизировать папку, докачивает только измененияТуннель до базы
База на сервере обычно закрыта от интернета и слушает только localhost. Туннель делает так, что порт на вашем ноутбуке ведёт к порту на сервере через SSH:
ssh -N -L 5432:127.0.0.1:5432 dwhПосле этого ваш DBeaver или Python подключаются к localhost:5432, а на самом деле общаются с базой на сервере. Флаг -N значит «без командной строки, только туннель», -L описывает проброс. Это самый частый способ работать с продовой базой безопасно.
Практика
Настоящей сети в учебном терминале нет, но всё остальное настоящее: ключи, конфиг, права.
- 1. Сгенерируйте пару ключей ed25519
- 2. Выведите публичный ключ на экран (его вы будете отправлять администратору)
- 3. Добавьте в ~/.ssh/config алиас dwh для хоста 5.42.99.125 с пользователем de
- 4. Попробуйте подключиться по алиасу: ssh dwh
- 5. Убедитесь, что права на приватный ключ 600 (ls -l ~/.ssh)
Что запомнить
ssh user@hostоткрывает терминал на сервере, ключи заменяют пароли.- Публичный ключ отдаём, приватный храним с правами 600.
~/.ssh/configпревращает длинные команды вssh dwh.scpиrsyncпереносят файлы,ssh -Lпробрасывает порт до базы.