
Чтобы не вводить пароль при выполнении каких-либо действий на любом из этих серверов, мне нужно загрузить свой сертификат SSH на удаленный сервер:
ssh-copy-id CptBartender@remote
Теперь... Мне нужно загрузить этот сертификат на более чем 400 серверов, и я пытаюсь найти способ не вводить/не вставлять свой пароль так много раз.
Вопрос: как автоматизировать это на Windows (с MinGW)? Cygwin, скорее всего, не вариант, потому что он, похоже, находится за великим корпоративным файрволом из ада.
На данный момент я:
- создал скрипт, который будет перебирать все пульты, но он запрашивает пароль для каждого из них
- пробовал передать пароль, но
yes
безрезультатно - читал о
expect
, но не смог найти способ заставить его работать на MinGW - читать о
sshpass
- то же самое, что иexpect
Я думал об AutoIt
этом, но должен быть способ получше...
решение1
PuTTY plink
может принимать пароль как параметр командной строки. Прямого эквивалента у него нет ssh-copy-id
, но его можно легко заскриптовать, например, запустив команды вручную...
plink foo@bar -pw baz "mkdir -p ~/.ssh && echo 'ssh-ed25519 AAAA...' >> ~/.ssh/authorized_keys"
...или загрузив файл с расширением pscp
.
Кроме того, если expect
не получится работать на Windows, наверняка вы сможете запустить его на одном из этих 400 серверов Linux?
(Кроме того, учитывая цифры, возможно, вам стоит рассмотреть возможность извлечения ключей из LDAP или использования AD/Kerberos? В последних версиях OpenSSH есть возможности для интеграции с LDAP без необходимости установки сторонних исправлений.)
решение2
Вы можете поискать инструмент Putty plink, как упоминалось выше. Или вы можете подумать об использовании одной из систем управления конфигурацией, например Puppet, Ansible или Chef в будущем. Вы можете использовать любую из них, чтобы добавить сертификат на все ваши серверы в кратчайшие сроки.
Ищете номера серверов? Я думаю, вам стоит серьезно задуматься. Они могут использоваться для большинства рутинных задач по администрированию серверов, включая управление пользователями, файлами и каталогами, а также программное обеспечение.