Назад | Перейти на главную страницу

Доступ по SSH для сотен тысяч пользователей

Мне нужно настроить решение, подобное GitHub, где пользователи могут подключиться к своему репозиторию git по SSH.

Это должно масштабироваться для сотен тысяч пользователей, поэтому моя идея состоит в том, чтобы использовать распределенную файловую систему для данных (чтобы каждый узел мог получить доступ ко всем данным) и реплицированную базу данных для управления пользователями (так что снова - каждый узел всегда может получить доступ к весь список пользователей).

Используя нормальный authorized_keys файл невозможно, поскольку пользователи не привязаны к конкретному узлу, поэтому я искал способ прочитать список из базы данных (https://serverfault.com/a/443230/125948).

Проблема с AuthorizedKeysCommand команда заключается в том, что она передает только имя пользователя (что в моем случае - будет мерзавец для всех пользователей), поэтому в основном мне пришлось бы сделать SELECT pub_key FROM user и всегда возвращать ВЕСЬ список для каждого соединения.

Очевидно, это неправильное решение, поэтому я искал другой способ аутентификации. В основном мой вопрос: как, черт возьми, GitHub делаем это?

Хорошо, нашел ответ: https://github.com/blog/530-how-we-made-github-fast

Они фактически пропатчили OpenSSH, чтобы выполнить поиск на сервере MySQL: https://github.com/norbauer/openssh-for-git

Я думаю, у них есть tcp-прокси, обнюхивающий пакет с именем прокси-машина