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

Попросите ssh использовать имя локального пользователя при подключении к jumphost

Я хочу предоставить длинный список экземпляров 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. Но это а) более требовательно с технологической точки зрения и б) не идеально, потому что у нас также есть несколько локальных хостов, которые я не могу запрашивать таким образом.