Как я могу использовать ожидание отправки пароля для ssh-соединения.
скажите, что пароль был p @ ssword и команда ssh была ssh [email protected]
Что бы я сделал, если бы он вводил пароль, когда он говорит
пароль [email protected]:
?
Правильное действие с использованием пары ключей SSH не является вариантом, потому что мне пришлось бы использовать ssh (scp), чтобы поместить ключ на сервер, который запросит пароль.
Я знаю, но все делается в виде службы на машине с Windows. Это означает, что у меня нет возможности добавить ключ ssh, если это не было сделано вручную раньше, что не является вариантом.
@malfist - почему это не вариант? Обычно предполагается установка и настройка любого решения, так почему бы не сделать это ограничением установки / настройки? Если то, что вы делаете, не честно, вам следует подумать о том, чтобы сделать это правильно, а не придумывать какие-то хитрости.
Потому что сервер, к которому будет подключаться служба, не будет статическим. Например, для каждого использования службы необходимо указывать сервер, в большинстве случаев он будет меняться, требуя ручных действий, которые противоречат цели.
Затем создайте свой собственный управляющий tty и выполните оттуда ssh ... это все еще звучит для меня очень подозрительно. Я не могу придумать ни одного случая незаконного использования такой «автоматизации».
Это называется удаленным резервным копированием сервера. И как мне создать свой собственный управляющий tty?
Итак, вы не можете найти ни одной законной причины для автоматизации входа на сервер по ssh?
Я этого не говорил, я сказал, что не могу придумать ни одного варианта использования вашей автоматизации. Есть много законных случаев, но большинство из них позволяют вам выполнить настройку. Что касается создания управляющего tty, задайте отдельный вопрос, слишком много, чтобы отвечать в комментариях :)
И, если бы я выполнял резервное копирование серверов удаленно с помощью автоматизации и ssh, я бы обязательно использовал аутентификацию с открытым ключом, предложенную в качестве ответа на этот вопрос.
Законной причиной для этого может быть сценарий ssh-доступа к сетевые устройства, который не поддерживает вход на основе сертификата - например, Коммутаторы Cisco.
Есть и другие варианты использования. Моя - тестовая среда. Сертификаты меняются каждый раз при переустановке кода. Это часть процедуры тестирования. И тест должен быть автоматическим ... :)
Автоматизировать SSH-соединения с использованием аутентификации по паролю - плохая идея. Используйте аутентификацию с открытым ключом, и все станет намного проще.





Не было бы проще использовать аутентификацию с открытым ключом и использовать ключ без парольной фразы?
Поскольку пользователь на исходной машине делает это, чтобы сделать ключ RSA
ssh-keygen -t rsa
Теперь скопируйте ~ / .ssh / id_rsa.pub на целевой компьютер и добавьте его в файл authorized_keys целевого пользователя.
Я почти уверен, что сделать то, что вы пытаетесь сделать, невозможно. Большинство приложений * nix, которые запрашивают пароль, считываются непосредственно из TTY, а не из стандартного ввода, поэтому вы не можете передать пароль внутрь. Вы можете, как уже упоминалось, настроить SSH так, чтобы он не запрашивал пароль, как объяснено здесь.
После того, как меня отвергли без видимой причины, я пошел и провел еще немного исследований по команде expect и обнаружил, что у нее есть команда send_tty, которая отправляет в / dev / tty вместо stdin, что может действительно делать то, что вы хотите ... Раньше я не знал об этой функции. Однако я все же рекомендую положить ключ на сервер.
Я знаю об этом, поэтому использую Expect, потому что он может так общаться.
Ваш самый быстрый путь вперед (если вы не хотите стать экспертом по Tcl, что было бы ... необычно ... в 2009 году), вероятно, будет использовать autoexpect. Вот страница руководства:
http://expect.nist.gov/example/autoexpect.man.html
Короче говоря, запустите autoexpect, запустите сеанс ssh, завершите то, что вам нужно сделать, прекратите автоматическое ожидание, а затем бейте клавиатуру по полученному беспорядку, пока он не сработает :) Я предполагаю, что вам не нужно ничего, кроме быстрого взломайте, чтобы разобрать ваши ключи, а затем, ну, похоже, вы уже знаете счет с этим.
И есть этот вопрос, который уже содержит пример, близкий к тому, что вы ищете.
Эй, не надо ругать tcl только потому, что у тебя нет GUTS, чтобы его выучить! ;)
cygwin не предлагает автоматическое ожидание. Я бы так хотел.
Справочная страница ссылка на сайт для autoexpect в вашем ответе больше не работает.
Я всегда использовал «правильное» решение, но в других ситуациях использовал expect.
Здесь Я нашел следующее предложение:
#!/usr/local/bin/expect
spawn sftp -b cmdFile [email protected]
expect "password:"
send "shhh!\n";
interact
Спасибо! Спасибо, что ответили на вопрос, а не рассказали мне, как мне это делать.
@Malfist: Мне неприятно это говорить, но я предпочитаю «объяснять альтернативные варианты», а не просто отвечать на вопрос. Я чувствую, что таким образом у вас будет больше возможностей.
@Р. Бемроуз Наслаждайтесь попытками изменить лабиринт вместо того, чтобы помогать ему ориентироваться.
'expect не установлен по умолчанию. Загрузите программу и установите ее на машину unix »(источник linux-bsd-central.com/index.php/content/view/26). Доступно для скачивания на nist.gov/el/msid/expect.cfm
Cygwin имеет автоматическое ожидание, но его нет в пакете bin. запустите setup.exe и найдите ожидайте и установите флажок источника. вы увидите получившееся дерево в / usr / src, а там находится каталог expect / expect / examples. там находится копия сценария autoexpect.
Ключевое решение не будет работать ... потому что ключи должны быть доступны для чтения только человеку, запустившему ssh. На xp вы не можете создать ключевую структуру с правильными разрешениями. Так что ssh их не прочитает. Возможно, это изменилось, но в последний раз я проверял, что все еще не работает.
Добро пожаловать в Stack Overflow. Этот комментарий не подходит в качестве ответа. Как только вы наберете больше репутации, вы будете добавлять комментарии к вопросам и ответам.
@ mikey-b В файловой системе NTFS вы можете использовать права доступа к файлу для защиты файла от посторонних глаз.
Поместить ключ на сервер нужно будет только один раз, тогда он больше никогда не будет запрашивать пароль. См. Мой ответ для ссылки на инструкции.