Как автоматизировать ввод пароля? - PullRequest
4 голосов
/ 01 апреля 2011

Я хочу установить библиотеку программного обеспечения (SWIG) на список компьютеров (узлы Jenkins). Я использую следующий сценарий, чтобы автоматизировать это несколько:

NODES="10.8.255.70 10.8.255.85 10.8.255.88 10.8.255.86 10.8.255.65 10.8.255.64 10.8.255.97 10.8.255.69"
for node in $NODES; do 
  scp InstallSWIG.sh root@$node:/root/InstallSWIG.sh
  ssh root@$node sh InstallSWIG.sh
done

Таким образом, это автоматизировано, за исключением запроса пароля, который выполняется для команд scp и ssh.

Есть ли способ ввести пароль программно?

Безопасность не является проблемой. Я ищу решения, в которых не используются ключи SSH.

Ответы [ 5 ]

6 голосов
/ 23 февраля 2012

Вот пример expect, который ssh с в Захват Stripe The Flag Server и ввод пароля автоматически.

expect <<< 'spawn ssh level01@ctf.stri.pe; expect "password:"; send "e9gx26YEb2\r";'
4 голосов
/ 01 апреля 2011

С помощью SSH правильный способ сделать это - использовать ключи.

# ssh-keygen

, а затем скопировать файл * ~ / .ssh / id_rsa.pub * на удаленный компьютер (узел root @ $) в файл .ssh / authorized_keys удаленного пользователя.

2 голосов
/ 25 февраля 2012

Вы можете выполнить задачу, используя empty , небольшую утилиту от sourceforge. Это похоже на ожидание, но, вероятно, более удобно в этом случае. После того, как вы установили его, ваш первый scp будет выполнен с помощью следующих двух команд:

./empty -f scp InstallSWIG.sh root@$node:/root/InstallSWIG.sh
echo YOUR_SECRET_PASSWORD | ./empty -s -c

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

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

./empty -f ssh root@$node sh InstallSWIG.sh
echo YOUR_SECRET_PASSWORD | ./empty -s -c
1 голос
/ 01 апреля 2011

Вы можете посмотреть, как настроить ssh-ключи без пароля. Установление соединений в пакетном режиме между OpenSSH и SSH2 является отправной точкой, вы найдете много информации по этой теме в Интернете.

0 голосов
/ 01 апреля 2011

Ответ Уэса правильный, но если вы хотите что-то грязное и медленное, вы можете использовать ожидать , чтобы автоматизировать это.

...