Я хочу предоставить длинный список экземпляров EC2 большой группе пользователей. Идея состоит в том, чтобы поделиться ssh_config через репозиторий git. Конфигурация будет содержать такие записи:
Host server_1_of_hundreds
User ec2-user
Hostname ip-1-2-3-4.eu-central-1.compute.internal
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
ForwardAgent yes
ProxyCommand ssh jump -W %h:%p
Host jump
User <local users name>
HostName jumphost.my.company
IdentityFile ~/.ssh/id_rsa
(Я знаю, что некоторые общие записи можно удалить, чтобы оптимизировать файл)
Все было бы хорошо, если бы я мог заменить <local users name>
с любым именем пользователя, используемым на машине, на которой выполняется проверка репозитория git.
Я пытался установить %i
но хотя эта переменная поддерживается, она не поддерживается для User
:
Arguments to some keywords can make use of tokens, which are expanded at runtime: %% A literal ‘%’. %C Shorthand for %l%h%p%r. %d Local user's home directory. %h The remote hostname. %i The local user ID. ...
Я бы предпочел, чтобы пользователи не выполняли поиск / замену на своих локальных компьютерах, потому что это будет означать изменение в git. Единственные изменения, которые я хочу, чтобы пользователи внесли, - это если Oни нужно добавить хост и сделать его доступным для остальных.
Можно ли как-нибудь "обмануть" ssh, чтобы прочитать User
из файла / среды? Я видел предложения, которые используют сценарий оболочки или некоторую «магию» в ProxyCommand
но они здесь не подходят. Делать ssh -o "User xyz"
вероятно, тоже не хорошее решение, потому что я хочу, чтобы это работало с scp
и Ansible тоже. И мне нравится текущее решение с ssh aliasofserver
так много, потому что он короткий, добавляя -o
сломал бы это.
Альтернативой может быть создание ssh_config из файла csv и динамическое добавление пользовательской секции хоста перехода. Затем каждый пользователь может изменить файл csv и зафиксировать его в git. Другой вариант - создать список, запросив список экземпляров AWS EC2. Но это а) более требовательно с технологической точки зрения и б) не идеально, потому что у нас также есть несколько локальных хостов, которые я не могу запрашивать таким образом.