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

SSH в машину с неизвестным IP

Я помогу настроить кучу (> 50) машин, которые распределены географически и по разным сетям. Таким образом, я априори не смогу узнать, какой IP-адрес у каждой машины. Я смогу добавить на машины любое программное обеспечение до того, как они будут развернуты. Главное, что мне нужно иметь возможность подключаться к каждому из них по ssh, чтобы время от времени обновлять их после того, как они были развернуты.

Есть ли программный пакет, который поможет мне разобраться со всеми этими машинами? Есть ли у меня способ настроить что-то, что позволит им время от времени «звонить домой» и отслеживать свои IP-адреса? Могу я сказать Google, что поможет решить эту проблему?

Это именно то, в чем DNS хорош, а IP-адреса - нет. Если у вас есть каждый из хостов, настроенных так, чтобы иметь индивидуальное имя хоста и делать динамическое обновление DNS для центрального сервера каждый раз, когда он подключается к сети, тогда вы всегда сможете использовать ssh для (например) server43.dynamic.example.com.

Как вы можете понять из приведенного выше примера, если вы это сделаете, я бы рекомендовал делегировать подзону для этих динамических хостов, чтобы никто не загрязнил ваш основной DNS.

Редактировать: сначала вы выбираете свой домен. Предположим, вы можете получить поддомен от основного корпоративного, скажем sub.example.com.

Затем вы получаете несколько DNS-серверов; два - хорошее число. Может быть, вы можете использовать свои корпоративные серверы, может быть, вам нужно получить пару VPS или арендовать NS-хостинг у кого-то с подсказкой. Вы заставляете своих корпоративных DNS-парней делегировать sub.example.com к этим серверам.

Затем вы настраиваете все эти клиентские ящики для выполнения обновлений DDNS в этом субдомене для этих серверов имен. Вы устанавливаете их все с действительными секретами для выполнения обновлений TSIG, и вы настраиваете основные серверы на прием динамических обновлений, но только при правильной подписи.

Когда клиент заходит в сеть, скажите client33, он выполняет обновление DDNS для client33.sub.example.com как описано выше. Ваш центральный блок распространения может в любое время ssh на client33.sub.example.com зная, что адрес будет актуальным.

Вы можете позвонить домой и найти действительно простое решение для ssh-ключа.

Перед развертыванием установите технического пользователя на каждом из удаленных хостов.

У этих пользователей есть пара ключей (ssh-genkey), открытый ключ, добавленный к авторизованным хостам на вашем домашнем сервере. Вдобавок к этому вам нужно настроить cronjob, который пытается раз в час входить в систему на домашнем сервере и регистрировать его IP-адрес.

Как насчет этого?

puppet может помочь вам, однако домашнее решение может включать:

создание учетной записи на вашем центральном сервере (в идеале с chroot jail'ом) и настройка ключа SSH. Раздайте закрытый ключ всем клиентам и настройте их на SSH на центральный сервер, используя этот ключ в cron:

ssh -i /home/user/.ssh/id_rsa_key_for_central_server user @ centralserver "echo hostname находится по адресу $ ipaddress >> sometracking.file "

Вы можете использовать обратный туннель SSH. Пример:

http://abechik.wordpress.com/2007/04/18/persistant-ssh-reverse-tunnel-connection/

Для каждого клиента используйте другой порт, чтобы вы могли подключаться, используя:

ssh localhost -p <client_port>