OpenSSH
OpenSSH — набор приложений для защищённой передачи данных, включающий в себя и клиентскую, и серверную часть. Является фактическим стандартом для Linux и многих других UNIX-подобных операционных систем.
Установка
Как правило, OpenSSH устанавливается при установке системы. В случае его отсутствия он может быть установлен следующей командой (на примере Debian GNU/Linux, установка и клиентской и серверной части):
apt install openssh-client openssh-server
Приложения, входящие в состав OpenSSH
В состав OpenSSH в частности входят следующие приложения:
- sshd — сервер
- ssh — клиент
- ssh-keygen — утилита для генерирования ключей и управления ими
- ssh-agent — приложение для хранения ключей в памяти
- scp — утилита для безопасного копирования файлов, аналогичная утилите копирования cp
- sftp — утилита для безопасной передачи файлов, аналогичная ftp-клиенту
sshd
Программа sshd является сервером SSH. Как правило, запускается автоматически. Основной конфигурационный файл сервера — это обычно /etc/ssh/sshd_config. Ошибки в конфигурации sshd могут привести к потере возможности подключения к удалённому серверу, редактировать этот файл при удалённом подключении следует с осторожностью, хотя обычно, при перезапуске OpenSSH с новым конфигурационным файлом старые соединения сохраняются, это, с одной стороны, даёт возможность исправить ошибку, а, с другой, следует помнить, что работа текущего соединения после перезапуска сервера не означает, что конфигурация правильная, следует убедиться, возможны ли новые подключения.
ssh
Программа ssh является клиентом для подключения к SSH-серверу. Это наиболее часто используемая программа из набора приложений OpenSSH. Кроме предоставления доступа к командной оболочке удалённого сервера она также позволяет создавать защищённые туннели.
ssh-keygen
Программа ssh-keygen предназначена для генерирования криптографических пар ключей, используемых для аутентификации вместо паролей. Пример генерации криптографической пары ключей:
ssh-keygen -t ed25519 -C 'My personal key'
Здесь при помощи параметра -t указан тип ключа, при помощи параметра -C указан комментарий, который будет добавлен в открытый ключ.
После запуска приложение запросит имя файла для сохранения секретного ключа, это будет файл .ssh/id_ed25519 в домашнем каталоге пользователя (т..е полный путь может выглядеть примерно так: /home/user/.ssh/id_ed25519), обычно нет необходимости его менять (если только уже не существует другой ключ, находящийся в том файле). Далее будет запрошен пароль и, далее, подтверждение пароля. Пароль будет невозможно сбросить, если вы его забудете, при этом хорошим тоном является установка стойкого к подбору пароля достаточной длины.
Также эта утилита позволяет посмотреть отпечаток ключа сервера. Когда вы впервые подключаетесь к серверу SSH, то клиентское приложение показывает вам отпечаток ключа сервера, и вам следует сравнить его с реальным отпечатком ключа сервера, во избежание атаки типа MITM. Администратор сервера может посмотреть отпечаток ключа командой вида:
ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub
В этой команде первый ключ -l означает просмотр отпечатка, после ключа -f идёт путь к открытому ключу, они по умолчанию имеют имена вида /etc/ssh/ssh_host_TYPE_key.pub, где вместо TYPE стоит тип ключа (rsa, ed25519 и т.д.).
Иногда клиентское приложение выводит отпечаток ключа не в том виде, в котором вы его ожидаете увидеть. Например, отпечаток вы ожидаете увидеть как непрерывную строку алфавитно-цифровых символов, а клиент SSH показывает строку байт в шестнадцатеричном виде, разделённых двоеточиями. В таких случаях нужно выбрать формат, в котором программа выдаст информацию об отпечатке ключа, это делается при помощи ключа -E. Вот например как выглядит команда получения информации о ключе RSA, с выводом отпечатка ключа, полученного по алгоритму MD5:
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub -E md5