Могу ли я установить ~ / .ssh / config для поиска динамических имен хостов EC2? - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть экземпляр EC2 на динамическом IP, и он не выполняет никаких DDNS, чтобы указывать на него публичное имя хоста.Я хотел бы установить ярлык в моем ssh_config для сервера и попросить aws сообщить мне, что такое IP или имя хоста.

$ aws ec2 describe-instances \
    --filters Name=key-name,Values=FOO \
    --query 'Reservations[*].Instances[*].PublicDnsName' \
    --output 'text'
ec2-XXX-XXX-XXX-XXX.compute-X.amazonaws.com

Но я не могу понять, как делегировать общедоступный IP-адрес или разрешение имени хоста на aws.

Я вижу, различных людей имеют сценарии длягенерация ssh_config из aws, но у меня есть другие вещи, которые я бы не потерял, если бы скрипт повозился с файлом. Некоторые другие люди могут использовать псевдонимы оболочки вместо ssh, но это усложняет работу других служб, которые конкретно используют SSH.

Я бы также предпочел не использовать внешний скрипт, если это возможно.

Host FOO ec2-FOO
    User ec2-user
    IdentityFile ~/.ssh/creds/some.pem

    # Irrelevant?
    Hostname example.com

    # Neither alternative works (assume full `aws` command)
    ProxyCommand bash -c 'ssh -i %i %u@$(aws ec2 describe-instances…)'
    ProxyCommand nc $(aws ec2 describe-instances …) %p
    # Note that %i (used here to specify IdentityFile) is not a valid token for
    # ProxyCommand. http://man7.org/linux/man-pages/man5/ssh_config.5.html#TOKENS

Вопросы, связанные с данной:

1 Ответ

0 голосов
/ 17 апреля 2019

Это нарушает некоторые требования в вопросе и не будет принято:

Вы можете использовать ключевое слово Include, чтобы добавить отдельный файл ssh_config, который вы обновляете с помощью скрипта.Это предотвращает засорение вашей основной конфигурации неправильным запуском скрипта.

# Primary ~/.ssh/config
Include config-ec2
# Periodically regenerated ssh_config at ~/.ssh/config-ec2
Host FOO ec2-FOO
    User ec2-user
    HostName ec2-XXX-XXX-XXX-XXX.compute-X.amazonaws.com

    # Figuring out how to specify a different pem for
    # each connection is still troublesome.
    IdentityFile ~/.ssh/creds/some.pem

С другой стороны, это позволяет вам ProxyCommand быть доступным для фактического прокси.

...