правильный способ 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
это сработало правильно!