Что такое SSH и зачем она нужна
SSH (Secure Shell) — сетевой протокол для безопасного управления удалёнными устройствами. До SSH администраторы использовали telnet, rlogin, ftp — они передавали данные, включая пароли, в открытом виде. SSH шифрует весь трафик, в том числе данные аутентификации.
Характеристики SSH:
- Шифрование — весь трафик защищён, пароли не видны перехватчику
- Аутентификация — по паролю или по паре ключей (рекомендуется)
- Удалённый доступ — полноценная работа в терминале удалённой машины
- Передача файлов — через SCP или SFTP поверх того же соединения
Как подключение происходит: пара ключей
При аутентификации по ключу создаётся два файла:
~/.ssh/id_rsa— приватный ключ. Хранится только у вас. Никому не передавать — тот, у кого есть этот файл, может войти на сервер от вашего имени.~/.ssh/id_rsa.pub— публичный ключ. Отдаётся преподавателю или администратору сервера; добавляется в~/.ssh/authorized_keysна сервере.
Принцип: сервер проверяет, что клиент владеет приватным ключом, соответствующим публичному. Сам приватный ключ при этом никуда не передаётся.
Генерация ключей
# Генерация с параметрами по умолчанию (RSA 3072 бит)
ssh-keygen
# Нажимать Enter несколько раз — путь по умолчанию, без passphrase
# Просмотреть публичный ключ (отдать преподавателю)
cat ~/.ssh/id_rsa.pub
Современная рекомендация — Ed25519 вместо RSA:
ssh-keygen -t ed25519 -C "your_email@example.com"
Ed25519 быстрее, безопаснее и генерирует более короткие ключи. Поддерживается в OpenSSH 6.5+ (2014).
На учебном сервере работает стандартная команда ssh-keygen без флага типа.
Права на файлы ключей
SSH откажет в подключении, если права на ключи слишком широкие:
# Приватный ключ — только владелец читает
chmod 600 ~/.ssh/id_rsa
# Папка .ssh — только владелец видит содержимое
chmod 700 ~/.ssh
Ошибка Permissions too open означает, что права на ключ слишком широкие — другие пользователи могут его прочитать. SSH защищает вас от этой ситуации.
SCP — безопасное копирование файлов
scp (Secure Copy) работает поверх SSH. Синтаксис напоминает cp, но один из адресов — удалённый (user@host:путь):
# Скопировать файл С сервера в текущую папку
scp -i ~/.ssh/id_rsa ec2-user@linux.itcareerhub.de:/opt/GROUP/NAME/file.txt .
# Отправить файл НА сервер
scp -i ~/.ssh/id_rsa ./local.txt ec2-user@linux.itcareerhub.de:/opt/GROUP/NAME/
За подробным разбором команд обратитесь к Занятие 08: SSH — там полная теория с примерами.