Использование ожидается, чтобы передать пароль в ssh

Как я могу использовать ожидание отправки пароля для ssh-соединения.

скажем, пароль был p @ssword и команда ssh была ssh [email protected]

Что мне делать с ожиданием ввода пароля, когда он говорит

[email protected] пароль:

Правильное действие с использованием пары ключей SSH не является вариантом, потому что мне нужно будет использовать ssh (scp), чтобы поместить ключ на сервер, который будет запрашивать пароль.

Ответ 1

Я всегда использовал "правильное" решение, но я использовал его в других ситуациях.

Здесь я нашел следующее предложение:

#!/usr/local/bin/expect
spawn  sftp  -b cmdFile [email protected]
expect "password:"
send "shhh!\n";
interact

Ответ 2

Не будет ли проще использовать аутентификацию с открытым ключом и использовать ключ без кодовой фразы?

Как пользователь на исходном компьютере делает это, чтобы сделать ключ RSA

ssh-keygen -t rsa

Теперь скопируйте файл ~/.ssh/id_rsa.pub на целевой компьютер и добавьте его в файл authorized_keys целевого пользователя.

Ответ 3

Самый быстрый путь вперед (если вы не хотите стать экспертом Tcl, который был бы... необычным... в 2009 году), вероятно, использовать autoexpect. Здесь man-страница:

http://expect.nist.gov/example/autoexpect.man.html

Вкратце, запустите autoexpect, запустите сеанс ssh, закончите то, что вам нужно сделать, прекратите автоматическое прогнозирование, а затем избили свою клавиатуру в результате беспорядка, пока он не сработает:) Я предполагаю, что вам не нужно что-то большее, чем быстрый взломать, чтобы ваши ключи разобрались, а потом, ну это звучит так, как будто вы уже знаете счет.

И там этот вопрос, который уже содержит пример, близкий к тому, что вы ищете.

Ответ 4

Ключевое решение не будет работать... потому что ключи должны быть доступны только для пользователя, выполняющего ssh. На xp вы не можете создать ключевую структуру с правильными разрешениями. Поэтому ssh не будет их читать. Возможно, это изменилось, но последнее, что я проверил, все еще не работает.

Ответ 5

Cygwin имеет autoexpect только в пакете bin. запустите setup.exe и выполните поиск и установите флажок источника. вы увидите результирующее дерево в /usr/src и там будет каталог expect/expect/examples. в нем хранится копия autoexpect script.

Ответ 6

Я уверен, что делать то, что вы пытаетесь сделать, невозможно. Большинство приложений * nix, которые запрашивают пароль, считанный из TTY напрямую, а не stdin, поэтому вы не можете подключить пароль. Вы можете, как указали другие, настроить SSH, чтобы не запрашивать пароль, как объяснялось здесь.

После того, как я был замедлен без видимых причин, я пошел и сделал еще немного исследований команды expect и обнаружил, что у нее есть команда send_tty, которая отправляет /dev/tty вместо stdin, что может на самом деле делай, что хочешь... Я раньше не знал об этой функции. Тем не менее, я по-прежнему рекомендую поместить ключ на сервер.