Autenticação SSH e autenticação sudo são dois conjuntos diferentes de credenciais. A opção -A
para o comando ssh
aplica-se apenas ao SSH. Ele fornece a capacidade de encaminhar suas credenciais para que você possa ssh de server
para outro sistema usando sua chave SSH local.
A menos que você tenha regras sudo permitindo que você execute comandos sem senha, ele sempre precisará solicitar sua senha, seja a partir do terminal do seu shell ou usando um programa askpass, se configurado. Um programa askpass é um programa auxiliar (tipicamente gráfico) que simplesmente solicita uma senha com segurança. Para autenticar com o sudo remotamente, você terá que fazer uma das duas coisas que está solicitando:
-
Verifique se você tem um tty para que o sudo possa solicitar sua senha com segurança no servidor. Isso é tão fácil quanto fazer login com
ssh -t
. -
Diga ao sudo para solicitar sua senha usando um programa askpass com a opção
-A
emsudo
(não confunda com a opção-A
parassh
!). Isso pode ser feito no seu script, por exemplo, com algo como:export SUDO_ASKPASS=/usr/lib/openssh/gnome-ssh-askpass sudo -A ...
Observe que, como você está enviando seu script de shell para o fluxo de entrada padrão da conexão SSH, sudo
não poderá solicitar uma senha com segurança. Se enviar o script pela entrada padrão SSH como essa for um requisito (em vez de apenas copiar o script para o servidor), a primeira opção não funcionará. Você terá que usar um programa auxiliar askpass ou configurar as regras sudo
necessárias para usar NOPASSWD
, se isso for uma opção.