OpenSSH: различия между версиями

Материал из SysWiki
добавлена информация о ряде приложений, входящих в состав OpenSSH
подробнее описана работа с ssh-keygen
Строка 11: Строка 11:
* sshd — сервер
* sshd — сервер
* ssh — клиент
* ssh — клиент
* ssj-keygen — утилита для генерирования ключей и управления ими
* ssh-keygen — утилита для генерирования ключей и управления ими
* ssh-agent — приложение для хранения ключей в памяти
* ssh-agent — приложение для хранения ключей в памяти
* scp — утилита для безопасного копирования файлов, аналогичная утилите копирования cp
* scp — утилита для безопасного копирования файлов, аналогичная утилите копирования cp
Строка 23: Строка 23:


=== ssh-keygen ===
=== ssh-keygen ===
Программа 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

Версия от 00:20, 19 февраля 2024

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