Я застрял в немного раздражающей ситуации.
Между моим рабочим столом и производственными серверами есть цепочка машин.Примерно так:
desktop -> firewall 1 -> firewall 2 -> prod_box 1
-> prod_box 2
-> ...
Я ищу способ автоматизировать развертывание в коробках продуктов через ssh.
Я знаю, что в целом существует ряд решений, номои ограничения:
- Изменения в брандмауэре запрещены. 2
- В конфигурационных окнах запрещены изменения конфигурации (только содержимое).
- Брандмауэр 1 имеет локальную учетную запись пользователя дляme
- межсетевой экран 2 и prod доступны как root
- порт 22 является единственным открытым портом между каждым каналом
Итак, в общем, последовательность команд, которую я выполняю дляdeploy это:
scp archive.tar user@firewall1:archive.tar
ssh user@firewall1
scp archive.tar root@firewall2:/tmp/archive.tar
ssh root@firewall2
scp /tmp/archive.tar root@prod1:/tmp/archive.tar
ssh root@prod1
cd /var/www/
tar xvf /tmp/archive.tar
Это немного сложнее, чем в реальности, но это основная сводка задач, которые нужно сделать.
Я поместил свой ключ ssh в firewall1: /home / user / .ssh / authorized_keys, так что это не проблема.
Однако я не могу сделать это для firewall2 или prod box.
Было бы замечательно, если бы я мог запустить это (команды выше) из сценария оболочки локально, ввести мой пароль 4 раза и покончить с этим.К сожалению, я не могу понять, как это сделать.
Мне нужен какой-то способ цепочки команд ssh.Я потратил весь день, пытаясь использовать python, чтобы сделать это, и в конце концов отказался, потому что библиотеки ssh, кажется, не поддерживают вход в систему с помощью ввода пароля.
Что я могу сделать здесь?
Должна быть какая-то библиотека, которую я могу использовать для:
- входа в систему через ssh с использованием либо файла ключа, либо динамически вводимого пароля
- удаленной удаленной командной команды через цепочкуssh tunnels
Я не совсем уверен, что пометить этот вопрос, поэтому я только что оставил его как ssh, развертывание пока.
Примечание.Было бы здорово использовать ssh-туннели и инструмент развертывания, чтобы вытолкнуть эти изменения, но мне все равно придется вручную входить в каждый ящик, чтобы настроить туннель, и это все равно не будет работать из-за блокировки порта.