2016-06-01 1 views
1

Я хочу написать сценарий оболочки для подключения нескольких хостов linux и сбора информации о сервере/информации о сервере.shell Сценарий с SSH с одним временным паролем для подключения нескольких хостов

Как мне нужно ssh имя_пользователя @ имя хоста для данного списка серверов, мне просто интересно, могу ли я ввести/жестко запрограммировать пароль на время и предотвратить команду ssh для запроса пароля для каждой команды ssh.

Я использую тот же пароль для всех серверов.

Я написал один сценарий оболочки, но его продолжаю предлагать ввести пароль для команды ssh в цикле.

+1

Вот почему они имеют 'SSH-agent' для таких случаев использования. В зависимости от используемой платформы ОС 'ssh-agent' может быть уже установлен. –

+0

«Одноразовый пароль» - это термин искусства, и это что-то очень не связанное с вашим вопросом. Возможно, вы захотите использовать другой термин. –

+0

BTW, просящий ответ «как можно скорее» или пометив вопрос как срочный, считается грубым. См. Также http://www.catb.org/esr/faqs/smart-questions.html#urgent –

ответ

1

Попробуйте использовать sshpass.

sshpass -p "password" ssh -o StrictHostKeyChecking=no [email protected]

Или использовать открытый ключ аутентификации (вы установить SSH подключения парой ключей без пароля ПРОМТ):

ssh-keygen -t rsa 
ssh-copy-id [email protected] 
+0

Передача пароля в командной строке ** крайне ** небезопасна - командные строки видны для каждого другого процесса на система. Даже если 'sshpass' перезаписывает командную строку после ее запуска, все еще есть окно возможностей. –

+0

... даже 'sshpass -f <(printf '% s \ n'" $ password ")' будет лучше (поскольку 'printf' является встроенной оболочкой, он не запускает внешнюю команду с паролем на своем ARGV). –

1

ответы Стэнли АиР хороши.

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

https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Multiplexing

+0

Это имеет смысл для нескольких подключений к одному хосту, но это одно соединение на хост для нескольких удаленных хостов. –