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

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

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

Использование обычного файла authorized_keys невозможно, поскольку пользователи не привязаны к определенному узлу, поэтому я искал способ прочитать список из базы данных ( /questions/184078/openssh-s-otkryityimi-klyuchami-iz-bazyi-dannyih/184089#184089).

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

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

2 ответа

Решение

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

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

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

Другие вопросы по тегам