SSH: Основы
SSH — это основной протокол и инструмент для управления удалёнными серверами. Также позволяет создавать туннели и передавать файлы.
Утилиты SSH
Заголовок раздела «Утилиты SSH»OpenSSH Server
Заголовок раздела «OpenSSH Server»sshd(OpenSSH Daemon): Серверный демон, который принимает входящие SSH-подключения. Аутентифицирует пользователей и устанавливает защищённые сессии.sftp-server(подсистема SFTP): Программа для передачи файлов по протоколу SFTP, обычно запускается автоматически демоном sshd.
OpenSSH Client
Заголовок раздела «OpenSSH Client»ssh(SSH клиент): Подключается к удалённому серверу, предоставляет виртуальный терминал и выполняет команды.ssh-keygen: Создаёт и управляет ключами аутентификации.scp: Копирует файлы между локальной и удалённой машинами по зашифрованному каналу.sftp: Передаёт файлы по защищённому каналу, аналогично FTP.
Подключение к серверу
Заголовок раздела «Подключение к серверу»ssh root@example.comПодключение к серверу с нестандартным портом:
ssh -p 2222 root@example.comПодключение к серверу с использованием определённого приватного ключа:
ssh -i ~/.ssh/server_ed25519 root@example.comКонфигурация клиента
Заголовок раздела «Конфигурация клиента»SSH-клиент может работать без конфигурационного файла и получать все необходимые параметры из аргументов командной строки. Однако вы можете создать конфигурационный файл с именем ~/.ssh/config. Этот файл должен содержать следующую информацию:
Host example.com HostName 192.168.1.1 User root Port 2222 IdentityFile ~/.ssh/server_ed25519Host: имя сервера. Это имя используется в команде подключения:ssh example.comHostName: необязательный адрес сервера. Если HostName не указан, правильный адрес или имя хоста должно быть указано вHostUser: имя пользователяPort: порт сервера. По умолчанию:22IdentityFile: необязательное поле, указывающее полный путь к файлу приватного ключа
SSH-ключи
Заголовок раздела «SSH-ключи»SSH-ключи — это более безопасный способ входа на SSH-сервер по сравнению с паролями. Они состоят из пары ключей: публичного и приватного. Публичный ключ размещается на сервере, к которому вы хотите подключиться, а приватный ключ остаётся на вашей локальной машине.
Генерация
Заголовок раздела «Генерация»Чтобы сгенерировать пару SSH-ключей, используйте следующую команду:
ssh-keygen -t ed25519 -f ~/.ssh/server_ed25519ed25519— выбор типа шифрования. Ed25519 — оптимальный вариант~/.ssh/server_ed25519— путь к файлу приватного ключа. Публичный ключ будет создан как~/.ssh/server_ed25519.pub
После запуска команды вам будет предложено ввести пароль. Этот пароль обеспечивает дополнительный уровень безопасности и потребуется при подключении к серверу.
Публичный ключ — это одна строка в следующем формате:
ssh-ed25519 AAAA...UUUU user@example.comКопирование публичного ключа на сервер
Заголовок раздела «Копирование публичного ключа на сервер»На стороне сервера добавьте эту строку в файл ~/.ssh/authorized_keys. В этом файле может быть несколько ключей. Чтобы добавить публичный ключ, выполните команду:
echo "ssh-ed25519 AAAA...UUUU user@example.com" >>~/.ssh/authorized_keysПроксирование SSH-агента
Заголовок раздела «Проксирование SSH-агента»Проксирование SSH-агента позволяет использовать ваши локальные SSH-ключи на удалённом сервере без передачи их. Это удобно, если нужно получить доступ к другому серверу с первого сервера, не копируя ключи на удалённую машину.
Включить проксирование SSH-агента можно с помощью опции -A в команде ssh:
ssh -A example.comТакже можно включить это постоянно для определённого хоста в конфигурационном файле SSH ~/.ssh/config:
Host example.com ForwardAgent yes