ssh - поиск IP через API по запросу

265
Wolph

Есть ли способ сделать ssh динамически искать IP-адрес для данного имени хоста через внешний API?

Сценарий таков, что у меня есть несколько клиентов с тысячами различных облачных серверов по требованию (новые добавляются каждый час, старые убиваются каждый час).

Поскольку имен очень много и они меняются довольно быстро, использование DNS API облачной службы на самом деле не вариант (я пробовал раньше, убивает их админ-панели и серверы API).

Итак ... Я ищу параметр конфигурации в ssh, чтобы использовать скрипт для поиска IP-адреса, когда я делаю "ssh some-name". Я знаю, что могу создать псевдоним сценария ssh и обернуть его, но мне интересно, есть ли доступная внутренняя опция.

1
... они используют DNS API на картошке? grawity 6 лет назад 0
Очень вероятно, но это, к сожалению, вне моего контроля, поэтому я стараюсь сделать его максимально удобным Wolph 6 лет назад 0

1 ответ на вопрос

2
grawity

Есть несколько вариантов. Прежде всего, есть ProxyCommand, который может использовать произвольную программу вместо TCP-соединения - до тех пор, пока он говорит SSH в stdin / stdout. (Конечно, это работает только с SSH.)

Например, для туннелирования через другой SSH-сервер:

ssh -o ProxyCommand="ssh bastion.tld -W %h:%p" server123.tld 

Таким образом, вы можете написать инструмент / скрипт на предпочитаемом вами языке, который принимает имя хоста в командной строке, ищет сервер, открывает TCP-соединение и копирует данные между ним и stdin / out. (Это может быть скрипт, который работает nc.)

Затем используйте это так:

# ~/.ssh/config – see `man ssh_config`  Host *.example.com ProxyCommand ~/bin/ssh-cloud-lookup %h %p 

Второй вариант - написать собственный DNS-сервер, который использует API вашего контейнера для поиска адресов и предоставления ответов. Я считаю, что я видел, как некоторые инструменты, такие как Chubby, делают именно это.


Третий вариант (специфичный для Linux) - написать плагин "nsswitch", который реализует поиск имени хоста, аналогично существующим плагинам "dns", "mdns", "files". Например, systemd поставляет плагин с именем nss_mymachinesдля разрешения имен контейнеров nspawn.

Отлично, опция ProxyCommand должна отлично работать в моем случае. API слишком медленный для других решений Wolph 6 лет назад 0

Похожие вопросы