Полный цикл в digital

SSH-ключи

Теория в нескольких словах, ssh может авторизоваться не по паролю, а по ключу. Ключ состоит из открытой и закрытой части:

  • Открытая, кладётся на сервер в домашний каталог пользователя, под которым заходят на сервер
  • Закрытая, кладётся на компьютер в домашний каталог пользователя, который идёт на удалённый сервер

Половинки сравниваются и если всё хорошо, происходит соединение.

Важно понимать, авторизуется не только клиент на сервере, но и сервер по отношению к клиенту. Главной особенностью ключа по сравнению с паролем является то, что его нельзя украсть, взломав сервер ключ не передаётся с клиента на сервер, а во время авторизации клиент доказывает серверу, что владеет ключом, та самая криптографическая магия.

Типы шифрования ключей

Программа ssh-keygen можен генерировать четыре типа ключей:

  1. RSA этот алгоритм обеспечивает наилучшую совместимость из всех, но требует большего размера ключа для обеспечения достаточной безопасности. Длина ключа по умолчанию составляет 3072 бит, но вы можете самостоятельно задать его размер от 1024 до 16384 бит с помощью опции -b команды ssh-keygen
  2. DSA криптографический алгоритм с использованием открытого ключа для создания электронной подписи, но не для шифрования. Это значит, что только один узел сможет подписать сообщение, а другие смогут только проверить ее на корректность. Алгоритм основан на вычислительной сложности взятия логарифмов в конечных полях. Алгоритм DSA в сравнении с RSA показывает лучшие показатели при генерации подписи, но уступает по времени при ее проверке. Также отметим, что максимальная длина ключа данного типа — 1024 бит. Это не самый безопасный показатель в защите от взлома
  3. ECDSA это реализация схемы цифровой подписи, основанная на использовании эллиптических кривых и модульной арифметики. Производительность данного алгоритма быстрее, чем у алгоритма RSA, так как для обеспечения шифрования требуются ключи гораздо меньшего размера. Однако у него есть минус: он более уязвим перед взломом с помощью квантовых вычислений, чем RSA
  4. ED25519 это схема подписи на эллиптической кривой, которая обеспечивает лучшую безопасность, чем ECDSA и DSA, и хорошую производительность. Его главными преимуществами являются скорость. Однако данный алгоритм поддерживается только в версиях от OpenSSH 6.5.
  5. ECDSA-SK и ED25519-SK это те же ECDSA и ED25519, но поддерживающие аппаратный аутентификатор. Данные алгоритмы появились не так давно в версии OpenSSH 8.2. Они позволяют реализовать двухфакторную аутентификацию с помощью устройств, которые поддерживают протокол FIDO/U2F. Существует множество разновидностей физической аутентификации, например USB-токен, или другие виды устройств, подключаемые к оборудованию с помощью Bluetooth или NFC

Генерация ключа

Свой ключ можно сгенерировать с помощью команды:

ssh-keygen

Ключ можно закрыть паролем, пароль спрашивается один раз и сохраняется некоторое время. Если пароль указать пустым, он спрашиваться при использовании не будет. Восстановить забытый пароль невозможно. Сменить пароль на ключ можно с помощью команды:

ssh-keygen -p

Чтобы выбрать любой подходящий тип из перечисленых:

  • dsa
  • ecdsa
  • ed25519
  • rsa

Используется опция -t:

ssh-keygen -t тип

Структура ключа

~/.ssh/id_rsa.pub открытый ключ. Его копируют на сервера, куда нужно получить доступ.

~/.ssh/id_rsa закрытый ключ. Его нельзя никому показывать. Если вы в письмо/чат скопипастите его вместо pub, то нужно генерировать новый ключ.

Копирование ключа на сервер

В каталоге пользователя, под которым вы хотите зайти на сервер, если создать файл ~/.ssh/authorized_keys и положить туда открытый ключ, то можно будет заходить без пароля. Обратите внимание, права на файл не должны давать возможность писать в этот файл посторонним пользователям, иначе ssh его не примет.

В ключе последнее поле user@machine. Оно не имеет никакого отношения к авторизации и служит только для удобства определения где чей ключ. Заметим, это поле может быть поменяно (или даже удалено) без нарушения структуры ключа.

Если вы знаете пароль пользователя, то процесс можно автоматизировать, команда позволяет скопировать ключ не редактируя файлы вручную:

ssh-copy-id user@server

Пример боевой команды:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@server.beget.tech
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг