Как включить доступ к репозитариям по ключу в RhodeCode


Все современные хранилища репозиториев поддерживают авторизацию с использованием открытых ключей и в связи с этим было неожиданно увидеть сообщение "SSH Keys usage is currently disabled, please ask your administrator to enable them.".

По умолчанию авторизация по ключу запрещена

Так как на этом проекте администратор я, то и спрашивать буду у себя.

Официальная документация по ssh-авторизации находится по адресу https://docs.rhodecode.com/RhodeCode-Enterprise/auth/ssh-connection.html, фактически для включения режима авторизации по ключам надо добавить раздел AuthorizedKeysFile в конфигурацию демона sshd и включить режим авторизации по ключу в конфигурационном файле RhodeCode.

Начнем с модификации конфигурации демона sshd и вам потребуется изменить строку (в некоторых дистрибутивах ее придется раскомментировать):

AuthorizedKeysFile     %h/.ssh/authorized_keys

в файле /etc/ssh/sshd_config на:

AuthorizedKeysFile      %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode

Как вы наверное поняли, мы добавляем дополнительный файл с ключами авторизации для пользователей.

В завершении настройки разрешаем RhodeCode использовать SSH-авторизации, для чего в файле /home/git/.rccontrol/community-1/rhodecode.ini измените параметры:

ssh.generate_authorized_keyfile = true
ssh.authorized_keys_file_path = ~/.ssh/authorized_keys_rhodecode
ssh.wrapper_cmd = ~/.rccontrol/community-1/rc-ssh-wrapper
ssh.wrapper_cmd_allow_shell = false
ssh.enable_debug_logging = false
ssh.executable.hg = ~/.rccontrol/vcsserver-1/profile/bin/hg
ssh.executable.git = ~/.rccontrol/vcsserver-1/profile/bin/git
ssh.executable.svn = ~/.rccontrol/vcsserver-1/profile/bin/svnserve

Фактически достаточно только изменить строку ssh.generate_authorized_keyfile = true, а остальные оставить по умолчанию.

Авторизация по ключам будет доступна после перезапуска службы:

# systemctl restart rhodecode.service

После добавления вашего публичного файла проверьте изменения в файле authorized_keys_rhodecode (в каталоге пользователя git)

Авторизация по ключу активирована