SSH: impede de perguntar a senha quando a autenticação do ssh-agent falha

4

Estou escrevendo um script para percorrer uma lista de nomes de host conhecidos, a fim de encontrar um servidor SSH em funcionamento no qual eu possa autenticar com minha chave SSH.

A chave está já carregada com ssh-agent e ssh-add , portanto, se eu me conectar a um host remoto funcional que conheça minha chave, nenhuma senha será solicitada e estou conectado com êxito sem nenhuma interação .

A coisa é, quando o host remoto não sabe minha chave, ssh me avisa com a senha (não tem chance de sucesso porque, se pudesse, já teria me registrado graças a ssh-agent ) . Eu gostaria de evitar esse comportamento e fazer o ssh abortar quando a ssh-agent auth falhar.

No momento, estou usando o seguinte comando para ignorar a maior parte da interação, mas não posso impedir o que acabei de descrever:

$ ssh -i ~/.ssh/id_rsa                      \
      -o UserKnownHostsFile=/dev/null       \
      -o KbdInteractiveAuthentication=no    \
      -o StrictHostKeyChecking=no           \
      -o PreferredAuthentications=publickey \
      -o ConnectTimeout=1                   \
      $host -n "whoami"

Obrigado pelas suas respostas.

    
por zopieux 19.05.2013 / 00:51

2 respostas

5

man ssh_config:

 BatchMode
         If set to ''yes'', passphrase/password querying will be disabled.
         This option is useful in scripts and other batch jobs where no
         user is present to supply the password.  The argument must be
         ''yes'' or ''no''.  The default is ''no''.
    
por 19.05.2013 / 00:59
1

Embora a resposta do BatchMode seja certamente a correta, quero também mencionar que você também pode fazer: -o PasswordAuthentication = no; mesma página de manual.

    
por 19.05.2013 / 05:32