Перейти к содержимому

SSH: Основы

SSH — это основной протокол и инструмент для управления удалёнными серверами. Также позволяет создавать туннели и передавать файлы.

  • sshd (OpenSSH Daemon): Серверный демон, который принимает входящие SSH-подключения. Аутентифицирует пользователей и устанавливает защищённые сессии.
  • sftp-server (подсистема SFTP): Программа для передачи файлов по протоколу SFTP, обычно запускается автоматически демоном sshd.
  • 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_ed25519
  • Host: имя сервера. Это имя используется в команде подключения: ssh example.com
  • HostName: необязательный адрес сервера. Если HostName не указан, правильный адрес или имя хоста должно быть указано в Host
  • User: имя пользователя
  • Port: порт сервера. По умолчанию: 22
  • IdentityFile: необязательное поле, указывающее полный путь к файлу приватного ключа

SSH-ключи — это более безопасный способ входа на SSH-сервер по сравнению с паролями. Они состоят из пары ключей: публичного и приватного. Публичный ключ размещается на сервере, к которому вы хотите подключиться, а приватный ключ остаётся на вашей локальной машине.

Чтобы сгенерировать пару SSH-ключей, используйте следующую команду:

Окно терминала
ssh-keygen -t ed25519 -f ~/.ssh/server_ed25519
  • ed25519 — выбор типа шифрования. 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-агента можно с помощью опции -A в команде ssh:

Окно терминала
ssh -A example.com

Также можно включить это постоянно для определённого хоста в конфигурационном файле SSH ~/.ssh/config:

Host example.com
ForwardAgent yes