никакой подарок tty и никакая askpass программа, указанная с 'ssh-A'

Я пробую следующую команду:

ssh -A user@server 'bash -s' < mylocalscript.sh

Но получите раздражение sudo: no tty present and no askpass program specified когда сценарий достигает a sudo. Согласно man ssh, -A как предполагается, передает локальную аутентификацию, таким образом, она должна смочь использовать sudo на удаленном сервере..

Что я делаю неправильно/не понимание..?

2
задан 5 May 2014 в 22:08

2 ответа

Аутентификация SSH и sudo аутентификация являются двумя различными наборами учетных данных. -A опция к эти ssh команда относится к SSH только. Это обеспечивает способность передать Ваши учетные данные, таким образом, Вы можете ssh от server до другой системы с помощью локального ключа SSH.

, Если у Вас нет правил sudo, разрешающих Вам командам выполнения без пароля, он должен будет всегда запрашивать Ваш пароль, или от терминала или от использования Вашей оболочки askpass программы, раз так настроенной. askpass программа является (обычно графической) программой помощника, которая просто запрашивает пароль надежно. Для аутентификации с sudo удаленно необходимо будет сделать одну из этих двух вещей, которые это запрашивает:

  • Гарантируют, чтобы у Вас был tty, таким образом, sudo может надежно запросить Ваш пароль на сервере. Это столь же легко как входящий в систему с ssh -t.

  • Говорят sudo запрашивать Ваш пароль с помощью askpass программы с -A опция на sudo (чтобы не быть перепутанным с -A опция для ssh!). Это может быть сделано в Вашем сценарии, например, с чем-то как:

    export SUDO_ASKPASS=/usr/lib/openssh/gnome-ssh-askpass
    sudo -A ...
    

Примечание, которое, так как Вы передаете свой сценарий оболочки по каналу к стандартному входному потоку соединения SSH, sudo, будет неспособно надежно запросить пароль. Если отправка сценария по стандартному входу SSH как это является требованием (вместо того, чтобы просто копировать сценарий в сервер), тогда право преимущественной покупки не будет работать. Необходимо будет или использовать askpass программу помощника или настроить необходимое sudo правила использовать NOPASSWD, если это - опция.

2
ответ дан 7 October 2019 в 21:43

Ваша предпосылка, что-A поможет sudo, является неправильной, к сожалению. Это просто вперед ssh-агент. Необходимо будет работать, askpass как предупреждение предлагает.

Также примечание, что bash -c не нужно. Вы можете простой канал в своем сценарии с ssh server < mylocalscript.sh

1
ответ дан 7 October 2019 в 21:43

Другие вопросы по тегам:

Похожие вопросы: