Я работаю над настройкой проверки подлинности ключа publi c для s sh на нескольких серверах с несколькими пользователями. Задача состоит в том, чтобы выполнить одну такую настройку на сервере с тестовыми пользователями, такими как test1,test2,test3 upto test20
. Проблема, которую я пытаюсь решить, состоит в том, как заставить s sh загружать только указанный c IdentityFile, основанный на входе пользователя в систему, вместо того, чтобы пытаться использовать все удостоверения, несмотря на использование IdentitiesOnly
(хотя согласно документам, похоже, он только предотвращает загрузку ключей агента s sh). Я мог бы увеличить MaxAuthTries
на стороне сервера s sh, но это хорошее решение, учитывая, что он может попытаться загрузить как минимум 20 ключей
Настройки и ограничения, которые я имею,
- В Jenkins выполняются задания по сборке, которые используют сценарии для передачи sh на тот же сервер для запуска тестов.
- Учитывая, что $ test является переменной, которая может быть любым тестом пользователь из
test1 to test20
, для каждого запуска скрипт запускает " s sh $test@servername". Каждый прогон jenkins мог выбрать любого тестового пользователя. - Я не могу вносить какие-либо обновления в сценарии, поскольку они принадлежат другой команде ie, я не могу использовать псевдоним нескольких хостов. Мне нужно использовать то же имя сервера.
- Теперь моя установка s sh выглядит следующим образом
- Добавлены закрытые ключи для каждого из тестовых пользователей
.ssh
папок с правильными разрешениями - Добавлен ключ публикации в файл
authorized_keys
для каждого из тестовых пользователей ssh_config
, расположенный в /etc/ssh/
для образца 10 test users
, выглядит следующим образом
# Site-wide defaults for some commonly used options. For a comprehensive
# list of available options, their meanings and defaults, please see the
# ssh_config(5) man page.
Host server1
Match user test1
IdentityFile /home/test1/.ssh/id_rsa.test1
Match user test2
IdentityFile /home/test2/.ssh/id_rsa.test2
Match user test3
IdentityFile /home/test3/.ssh/id_rsa.test3
Match user test4
IdentityFile /home/test4/.ssh/id_rsa.test4
Match user test5
IdentityFile /home/test5/.ssh/id_rsa.test5
Match user test6
IdentityFile /home/test6/.ssh/id_rsa.test6
Match user test7
IdentityFile /home/test7/.ssh/id_rsa.test7
Match user test8
IdentityFile /home/test8/.ssh/id_rsa.test8
Match user test9
IdentityFile /home/test9/.ssh/id_rsa.test9
Match user test10
IdentityFile /home/test10/.ssh/id_rsa.test10
Host *
IdentitiesOnly yes
# ForwardAgent no
# ForwardX11 no
# RhostsRSAAuthentication no
# RSAAuthentication yes
# PasswordAuthentication yes
И в идеале, чтобы избежать дублирования, формат мог бы быть
Host server1
Match user test*
IdentityFile /home/test1/.ssh/id_rsa.test*
Но IdentityFile, похоже, не поддерживает подстановочные знаки / регулярные выражения. Как я смогу выполнить такую настройку? Дайте мне знать, если у вас есть какая-либо другая информация.
Заранее спасибо