Назад | Перейти на главную страницу

Удаленная команда ssh с использованием sudo без пароля не работает

Войдя в систему как bryan @ localserver, я пытаюсь выполнить резервное копирование с помощью rsync на удаленном хосте bryan @ remoteserver.

Мне нужно соединение rsync для повышения привилегий на удаленном хосте с помощью --rsync-path='sudo rsync', но у меня возникли проблемы, поэтому я решил упростить ситуацию и сначала попытаться заставить работать следующее:

bryan@localserver # ssh bryan@remoteserver 'sudo /usr/bin/whoami'

Как только я это раскрою, я смогу заставить работать rsync.


Что я уже сделал:

У меня настроен ssh, так что bryan @ localserver может ssh на bryan @ remoteserver, используя ключ вместо пароля.

bryan@localserver # ssh bryan@remoteserver
bryan@remoteserver #

Я также настроил bryan @ remoteserver для запуска /usr/bin/whoami как sudo, без пароля в файле sudoers на удаленном сервере:

bryan   ALL=(ALL) NOPASSWD: /usr/bin/whoami

Это отлично работает:

bryan@remotehost # sudo whoami
root

Но с локального сервера:

bryan@localhost # ssh bryan@remoteserver 'sudo /usr/bin/whoami'
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts

Мой полный файл sudoers (без комментариев и пустых строк) приведен ниже:

Defaults env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults !requiretty
root    ALL=(ALL:ALL) ALL
bryan   ALL=(ALL) NOPASSWD: /usr/bin/whoami
%admin  ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

ssh -t from localserver решает ошибку «no tty present», но по-прежнему запрашивает пароль bryan @ remotehost.

Кто-нибудь может объяснить, в чем проблема?

localserver - это Ubuntu 10.04 x64, удаленный сервер - Ubuntu 12.04 x64.

Вы член sudo группа или admin группа? Из sudoers страница руководства:

Когда для пользователя совпадают несколько записей, они применяются по порядку. Если есть несколько совпадений, используется последнее совпадение (которое не обязательно является самым точным совпадением).

Вы можете переместить свой bryan ALL=(ALL) NOPASSWD: /usr/bin/whoami линию вниз, чтобы это было последнее совпадение. Это должно уберечь вас от запроса пароля.