Как передать пароль в su / sudo / ssh без переопределения TTY? - PullRequest
136 голосов
/ 24 октября 2008

Я пишу программу на C Shell, которая будет выполнять su или sudo или ssh. Все они хотят, чтобы их пароли вводились в консоли (TTY), а не в stdin или в командной строке.

Кто-нибудь знает решение?

Настройка без пароля sudo не вариант.

может быть вариантом, но его нет в моей урезанной системе.

Ответы [ 20 ]

1 голос
/ 17 февраля 2017
ssh -t -t me@myserver.io << EOF
echo SOMEPASSWORD | sudo -S do something
sudo do something else
exit
EOF
1 голос
/ 27 октября 2008

Установите SSH для Аутентификации с открытым ключом, без ключевой фразы Нагрузки гидов в сети. Вам не понадобится пароль для входа в систему. Затем вы можете ограничить количество соединений для ключа на основе имени хоста клиента. Обеспечивает разумную безопасность и отлично подходит для автоматизированных входов в систему.

0 голосов
/ 04 ноября 2017

Опираясь на ответ @ Джахида, у меня это работало в macOS 10.13:

ssh <remote_username>@<remote_server> sudo -S <<< <remote_password> cat /etc/sudoers
0 голосов
/ 23 марта 2017

USE:

echo password | sudo command

Пример:

echo password | sudo apt-get update; whoami

Надеюсь, это поможет ..

0 голосов
/ 24 октября 2008

Вы можете указать пароль в качестве параметра для ожидаемого сценария.

0 голосов
/ 23 марта 2013

У меня была такая же проблема. Диалоговый скрипт для создания каталога на удаленном компьютере. Диалог с SSH легко. Я использую sshpass (ранее установленный).

   dialog --inputbox "Enter IP" 8 78 2> /tmp/ip

   IP=$(cat /tmp/ip)


   dialog --inputbox "Please enter username" 8 78 2> /tmp/user

   US=$(cat /tmp/user)


   dialog --passwordbox "enter password for \"$US\" 8 78 2> /tmp/pass

   PASSWORD = $(cat /tmp/pass)


   sshpass -p "$PASSWORD" ssh $US@$IP mkdir -p /home/$US/TARGET-FOLDER


   rm /tmp/ip

   rm /tmp/user

   rm /tmp/pass

привет из Германии

Titus

0 голосов
/ 22 февраля 2013

Один из способов - использовать опцию read -s. Таким образом, символы пароля не возвращаются на экран. Я написал небольшой сценарий для некоторых случаев использования, и вы можете увидеть его в моем блоге: http://www.datauniv.com/blogs/2013/02/21/a-quick-little-expect-script/

0 голосов
/ 22 октября 2009
su -c "Command" < "Password"

Надеюсь, что это полезно.

0 голосов
/ 24 октября 2008

Жесткое кодирование пароля в ожидаемом скрипте аналогично наличию sudo без пароля, на самом деле хуже, так как sudo, по крайней мере, регистрирует свои команды.

0 голосов
/ 18 октября 2010
echo <password> | su -c <command> <user> 

Это работает.

...