Работа с Github в текущих реалиях при наличии OpenSSH версии младше 7.2
Итак, вот и закончился март месяц. В мире продолжают твориться ужасные события, но тем не менее я считаю что я должен продолжать делать какие-то хорошие вещи и продолжать делиться знаниями со всеми. Может быть от этого всего и немного пользы - но это хоть что-то.
Как ни странно, раньше я очень настороженно относился к различным облачным платформам, наподобие Github, Gitlub, Bitbucket и пр., т.к. предпочитал больше иметь собственный сервачок, да и если честно, я тогда по привычке больше предпочитал SVN вместо Git. Со временем, я как-то потихоньку начал переползать на использование Git, да и удобство использования и вседоступности Github начало подманивать, с его обширным и доступным набором инструментария для автоматического деплоя (GitHub Actions, Github Webhooks и пр.).
Github конечно не стоит на месте и со временем развивается, в т.ч. в вопросах безопасности и соответственно меняются требования - просто не всегда есть возможность наблюдать за всеми изменениями во всём.
Суть ситуации
При разработке коммерческого сайта я использую приватный репозиторий Github с использованием возможностей Webhook, которые срабатывают при событии git "push". При этом происходит HTTP запрос (с авторизацией по ключу) к скрипту, который в свою очередь тупо запускает git pull. Для того, чтобы можно было производить выгрузку из приватного репозитория, в Github добавляется SSH ключ (Deploy key), который допускает только обновление из репозитория (фактически readonly).
К сожалению недавно появились проблемы с тем, что Github стал отклонять соединение, по причине недопустимого SSH ключа. Суть в том, что Github стал переходить на использование ключей, кодированных более стойкими алгоритмами и окончательно отпала поддержка DSA ключей, ужесточились требования при работе с RSA (например стали отклоняться RSA с SHA-1) и при этом стал требоваться на клиенте OpenSSH версии 7.2 и выше.
В моем случае на хостинге использовался старый Debian Wheezy, на котором был установлен только OpenSSH 6.7, что вроде бы как меньше необходимой 7.2.
Решение проблемы Github и OpenSSH старых версий (>= 5.7)
Тем не менее, согласно посту в блоге Github, вполне можно использовать OpenSSH >= 6.5 с ключами Ed25519 и даже можно использовать OpenSSH >= 5.7, но только уже с ключами ECDSA. При этом, по информации с того же поста, полная поддержка ECDSA и Ed25519 в Github были добавлены только в конце 2021г., из-за чего возможное использование этих алгоритмов может оказаться для некоторых сюрпризом.
В моем случае, вполне было достаточно использования Ed25519 (по умолчанию SHA-256), а ключ соответственно генерируется командой:
ssh-keygen -t ed25519
Данная команда создаст два ключа (приватный и публичный): id_ed25519 и id_ed25519.pub. Публичный ключик мы передаем Github, в раздел Deploy keys и соединение в итоге успешное.
Судя по планам Github с переходом на новые алгоритмы, весь процесс должен был завершится 15.03.2022 и вроде бы пока новых изменений не предвидится. Но сейчас обстановка меняется стремительно изо дня на день, поэтому нужно держать нос по ветру и внимательно наблюдать за ситуацией.
Заключение
К сожалению, Github все чаще становится объектом атак и совсем не удивляет тот факт, что ужесточается требование к использованию более стойких алгоритмов в механизмах авторизации. Да и просто лишним не будет время от времени не забывать обновлять ключи.
Также эта ситуация демонстрирует необходимость знать английский язык как минимум на уровне чтения, поскольку вся необходимая информация была опубликована именно в блоге Github, а там все на английском. Согласитесь, вполне глупая ситуация, когда ваша работа встала только из-за того, что кто-то не перевел официальное уведомление с английского на русский и не опубликовал это на русскоязычных ресурсах (opennet.ru, habr.com, vc.ru, linux.org.ru и пр.)