2010-10-15 7 views
3

Я знаю, что мы shuld делаем ssh user @ target , но где мы укажем пароль?Как использовать команду ssh в сценарии оболочки?


Хмм спасибо за все ваши ответы. Мое требование - мне нужно запустить несколько серверов на разных машинах. Все серверы должны запускаться с одним сценарием оболочки. Ну, ввод пароля каждый раз кажется немного плохим, но я думаю, мне придется прибегнуть к этому варианту. Одна из причин, по которой я не хочу сохранять открытые ключи, я могу не подключаться к тем же машинам каждый раз. Однако легко вернуться и изменить скрипт для изменения целевых адресов.

+0

Я в замешательстве: если все ваши ключи находятся на соответствующих машинах, это дает вам возможность называть их без пароля (предполагая, что вы не связываете кодовую фразу с ключами). Это не значит, что вам нужно подключиться к каждой машине с помощью ключа. – wlangstroth

ответ

2

Это не может быть сделано с помощью простой команды ssh по соображениям безопасности. Если вы хотите использовать пароль маршрут с SSH, следующая ссылка показывает некоторые скрипты, чтобы обойти эту проблему, если вы настойчивы:

Scripts to automate password entry

6

Лучший способ сделать это путем создания частного/публичного ключа пара и сохранение открытого ключа на удаленном сервере. Это безопасный способ входа в систему без ввода пароля каждый раз. Read more here

+0

Для тех, кто на окнах, я рекомендую набор инструментов «шпатлевка». Для этого сценария инструмент pageant будет обрабатывать управление ключами. pglombardo дает обзор использования открытого ключа auth on * nix. Я устанавливал это много раз на linux, и это может быть проблемой время от времени. Если у вас возникли проблемы с настройкой, отправьте их здесь – RyanHennig

+0

Я думаю, что ссылка не работает. – ComputerScientist

2

Команда ssh предложит ввести ваш пароль. Небезопасно указывать пароли в командной строке, поскольку полная команда, которая выполняется, обычно видна во всем мире (например, ps aux), а также сохраняется в виде обычного текста в файле истории команд. Любая хорошо написанная программа (включая ssh) будет запрашивать пароль, когда это необходимо, и отключит телетайп, чтобы он не был виден на терминале.

Если вы пытаетесь выполнить ssh из cron или из фона, используйте ssh-agent.

2

То, как я это делал в прошлом, это просто установить пару ключей аутентификации.

Таким образом, вы можете войти в систему, не указывая при этом пароль, и работает в сценариях оболочки. Существует хороший учебник здесь:

http://linuxproblem.org/art_9.html

0

Если вы действительно хотите использовать проверку подлинности пароля, вы можете попробовать ожидать. См. here для примера

1

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

Для этого пользователь сценария, если у вас есть какие-либо настройки клавиш в ~/.ssh/(ключевые файлы будут заканчиваться расширением .pub)

Если у вас нет каких-либо ключей установки вы можете запустить:

ssh-keygen -t rsa 

, который будет генерировать ~/.ssh/id_rsa.pub (опция -t имеет другие типы, а)

Вы можете скопировать содержимое этого файла в ~ (удаленный пользователь)/.ssh/authorized_keys на удаленном компьютере.

Как пользователь сценария, вы можете проверить, что она работает:

ssh [email protected] 

Вы должны быть зарегистрированы без пароля.

В то же время, когда ваш сценарий запускается от этого пользователя, он может автоматически SSH на удаленную машину.