no tty presente e nenhum programa askpass especificado com 'ssh -A'

2

Estou tentando o seguinte comando:

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

Mas pegue o irritante sudo: no tty present and no askpass program specified quando o script atinge um sudo . De acordo com man ssh , -A deve encaminhar a autenticação local, portanto, deve ser possível usar sudo no servidor remoto.

O que estou fazendo errado / não entendo ..?

    
por knownasilya 05.05.2014 / 20:08

2 respostas

2

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 em sudo (não confunda com a opção -A para ssh !). 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.

    
por Mike Miller 05.05.2014 / 21:04
1

Sua premissa de que -A ajudará sudo está errado, infelizmente. Apenas encaminha o agente ssh. Você terá que executar o askpass como o aviso sugere.

Observe também que bash -c não é necessário. Você pode pipe simples no seu script com ssh server < mylocalscript.sh

    
por wernerb 05.05.2014 / 20:26