Я пишу программу C Shell, которая будет делать su
или sudo
или ssh
. Все они хотят, чтобы их пароли вводились в консоли (TTY), а не в stdin или в командной строке.
Кто-нибудь знает решение?
Настройка без пароля sudo
не вариант.
ожидать может быть вариантом, но его нет в моей урезанной системе.
Ответы:
Для sudo есть опция -S для принятия пароля от стандартного ввода. Вот мужская запись:
Это позволит вам выполнить команду вроде:
Что касается SSH, я предпринял много попыток автоматизировать / сценарий его использования безуспешно. Кажется, что нет встроенного способа передать пароль в команду без запроса. Как уже упоминалось, утилита « ожидаем », похоже, нацелена на решение этой дилеммы, но, в конечном счете, правильная авторизация с закрытым ключом - правильный путь при попытке ее автоматизировать.
источник
nonroot:yourpassword@hostname.com
? Конечно, все намного проще, если вы используете аутентификацию ключей и менеджер ключей.'cat pw | sudo -S <command>
и позжеrm pw
.nc -l 12345 | sudo -S <command>
. На отправляющей стороне;echo myPassord | nc <target> 12345
, Это просто перемещает проблему обработки пароля, но, вероятно, на главную консоль, где у вас есть больше возможностей.Я написал некоторый Applescript, который запрашивает пароль через диалоговое окно, а затем создает собственную команду bash, например:
Я не уверен, поможет ли это.
Было бы неплохо, если бы sudo принял предварительно зашифрованный пароль, чтобы я мог зашифровать его в своем скрипте и не беспокоиться о том, чтобы повторять пароли с открытым текстом. Однако это работает для меня и моей ситуации.
источник
Для
ssh
вы можете использоватьsshpass
:sshpass -p yourpassphrase ssh user@host
.Вам просто нужно сначала скачать sshpass :)
источник
У меня есть:
Работает для меня.
источник
Для sudo вы можете сделать это тоже:
источник
Обычное решение этой проблемы - установка вспомогательного приложения, которое выполняет задачу, требующую доступа суперпользователя: http://en.wikipedia.org/wiki/Setuid
Sudo не предназначен для использования в автономном режиме.
Позднее редактирование: SSH может использоваться с аутентификацией с закрытым открытым ключом. Если закрытый ключ не имеет парольной фразы, можно использовать ssh без запроса пароля.
источник
Это можно сделать, установив открытый / закрытый ключи на целевых хостах, к которым вы будете подключаться. Первым шагом было бы создать ключ ssh для пользователя, выполняющего скрипт на локальном хосте, выполнив:
Затем введите пустой пароль. После этого скопируйте ключ ssh на целевой хост, к которому вы будете подключаться.
После регистрации ключей ssh вы сможете выполнять молчание
ssh remote_user@other_host
с вашего локального хоста.источник
Может быть, вы можете использовать
expect
команду?Эта команда дает пароль автоматически.
источник
Когда нет лучшего выбора (как предлагают другие), тогда человек соцат может помочь:
Необходима вся сложность pty, setsid, ctty, и, хотя вам может не понадобиться спать так долго, вам нужно будет спать. Также стоит посмотреть параметр echo = 0, как и передача удаленной команды из командной строки ssh.
источник
su
.su
не имеет опции -S (stdin).Посмотрите на
expect
утилиту Linux.Это позволяет отправлять вывод в stdio на основе простого сопоставления с образцом на stdin.
источник
Установите SSH для Аутентификации с открытым ключом, без ключевой фразы. Нагрузки гидов в сети. Вам не понадобится пароль для входа в систему. Затем вы можете ограничить количество соединений для ключа на основе имени хоста клиента. Обеспечивает разумную безопасность и отлично подходит для автоматического входа.
источник
источник
У меня такая же проблема. Диалоговый скрипт для создания каталога на удаленном компьютере. Диалог с SSH легко. Я использую sshpass (ранее установленный).
привет из Германии
Titus
источник
Основываясь на ответе @ Jahid, это помогло мне в macOS 10.13:
источник
лучшая
sshpass
альтернатива:passh
https://github.com/clarkwang/passhВход на удаленный сервер
Запустите команду на удаленном сервере
другие способы передачи пароля
Здесь я объяснил, почему он лучше, чем sshpass и другие решения.
источник
Это работает
источник
su
, которые вместо этого считывают пароль из stdio .Жесткое кодирование пароля в ожидаемом сценарии аналогично наличию sudo без пароля, на самом деле хуже, так как sudo, по крайней мере, регистрирует свои команды.
источник
Один из способов - использовать опцию read -s. Таким образом, символы пароля не возвращаются на экран. Я написал небольшой скрипт для некоторых случаев использования, и вы можете увидеть его в моем блоге: http://www.datauniv.com/blogs/2013/02/21/a-quick-little-expect-script/
источник
ОБЛАСТЬ ПРИМЕНЕНИЯ:
Пример:
Надеюсь, поможет..
источник
Вы можете указать пароль в качестве параметра для ожидаемого скрипта.
источник
Надеюсь, это полезно.
источник