Выполните команду sudo в Linux из plink.exe в Windows

Если я выполню команду plink

plink  [email protected]   sudo nano /etc/hosts

При вводе пароля при появлении запроса я получаю

sudo: нет tty и не указана программа askpass

Извините, попробуйте еще раз.

sudo: нет tty и не указана программа askpass

Извините, попробуйте еще раз.

sudo: нет tty и не указана программа askpass

Извините, попробуйте еще раз.

sudo: 3 попытки неправильного ввода пароля

Как выполнить sudo command из plink? Или есть какие-то альтернативы?


person Paul    schedule 27.11.2013    source источник


Ответы (4)


я знаю, что вопрос старый, но это может помочь

вы можете выполнить plink (инструменты шпатлевки)

plink -v -ssh -m "path/to/commands.txt" -l usertlogin -pw PASSWORDSERVER

команды.txt:

echo -e "PASSWORD\n" | sudo -S cat /etc/passwd

sudo -S для получения пароля от стандартного ввода и с помощью echo -e "пароль\n" для передачи пароля (и \n для нажатия intro -new line- )

точно так же вы можете выполнить команду passwd:

> echo -e "OLDPASSWORD\nNEWPASSWORD\nNEWPASSWORD" | passwd
person user2948547    schedule 28.02.2014
comment
Хотя это решает проблему под рукой, я бы расценил это как плохую практику безопасности. Если кто-то на удаленном хосте выполнит команду ps в нужное время, он получит ваш пароль в виде простого текста. редактировать: опечатки - person TobiM; 22.11.2018

Почему Плинк? вместо этого используйте SSH. Также SSH потребуется опция -t для sudo команд. Со страницы руководства ssh:

 -t      Force pseudo-tty allocation.  This can be used to execute arbitrary screen-based programs on a remote
         machine, which can be very useful, e.g. when implementing menu services.  Multiple -t options force tty
         allocation, even if ssh has no local tty.
person slayedbylucifer    schedule 27.11.2013
comment
Спасибо. если я использую опцию -t, то для команд sudo запрашивается пароль. Есть ли способ отправить пароль в команде с запросом. - person Paul; 27.11.2013
comment
Я не знаю, как отправить пароль в команде. Вместо этого на целевом сервере в sudo вы можете настроить пользователя с опцией NOPASSWD. Так что он не будет повышен ни за какой пароль для любой команды sudo, которую он запускает. Прочтите документацию sudo для получения дополнительной информации о NOPASSWD. - person slayedbylucifer; 27.11.2013

Почему вы используете плинк здесь? В общем, вы бы использовали plink для вызова неинтерактивного скрипта на удаленном хосте. Если вы хотите делать интерактивные вещи (например, редактировать файл), просто подключитесь к серверу по ssh (либо из вашей оболочки, используя клиент ssh в Linux или запустив шпатлевку в Windows), затем отредактируйте файл.

Дополнительную информацию о plink и некоторые примеры можно найти здесь< /а>.

person Mark J. Bobak    schedule 27.11.2013
comment
Мне нужно подключиться к Linux из кода C Sharp, поэтому я попытался использовать plink. На самом деле мне нужно вызвать скрипт. Я просто привел пример. - person Paul; 27.11.2013

Мне нужно было создать несколько папок и установить разрешения. Эти блоки работали у меня в PowerShell для автоматизации. Тот, кто предлагает просто использовать SSH, надеюсь, понял, что в настоящее время это не правильное решение. Сокращение ручного процесса должно быть целью каждого.

$null = iex "cmd /c $plinkpath -ssh -l $linuser -pw $linpass $computername `"echo $linpass | sudo -S mkdir $puppetfolder`"" *>&1

$null = iex "cmd /c $plinkpath -ssh -l $linuser -pw $linpass $computername `"echo $linpass | sudo -S chmod o+wx $puppetfolder`"" *>&1
person Christopher    schedule 08.06.2016