правильный способ sudo через ssh
У меня есть скрипт, который запускает другой скрипт через SSH на удаленном сервере с помощью sudo. Однако, когда я набираю пароль, он появляется на терминале. (В противном случае он работает нормально)
ssh user@server "sudo script"
каков правильный способ сделать это, чтобы я мог ввести пароль для sudo через SSH без пароля, появляющегося при вводе?
6 ответов
другой способ-использовать -t
переключатель ssh
:
ssh -t user@server "sudo script"
см.http://linuxcommand.org/man_pages/ssh1.html:
-t Force pseudo-tty allocation. This can be used to execute arbi-
trary 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.
предполагая, что вы не хотите никаких подсказок пароля:
ssh $HOST 'echo $PASSWORD | sudo -S $COMMMAND'
пример
ssh me@localhost 'echo secret | sudo -S echo hi' # outputs 'hi'
NOPASS
в конфигурации на вашем целевом компьютере является решением. Продолжить чтение на http://maestric.com/doc/unix/ubuntu_sudo_without_password
лучший способ-это ssh -t user@server "sudo <scriptname>"
, например ssh -t user@server "sudo reboot"
.
Сначала он запросит пароль для пользователя, а затем root (поскольку мы запускаем скрипт или команду с правами root.
Я надеюсь, что это помогло и очистили ваши сомнения.
я столкнулся с проблемой,
user1@server1$ ssh -q user1@server2 sudo -u user2 rm -f /some/file/location.txt
Output:
sudo: no tty present and no askpass program specified
тогда я попробовал с
#1
vim /etc/sudoers
Defaults:user1 !requiretty
не работает
#2
user1 ALL=(user2) NOPASSWD: ALL
это сработало правильно!
в зависимости от вашего использования, у меня был успех со следующим:
ssh root@server "script"
это запросит пароль root, а затем выполнит команду правильно.