Sair do script se o SSH solicitar senha [duplicado]

0

Estou tentando alcançar um cenário em que preciso de um servidor SSH para ABC do servidor XYZ. As chaves públicas serão configuradas para suavizar a senha e fazer login. Agora eu só quero sair do script se for encontrado que o comando SSH solicita senha. Isso significa que a chave pública não está configurada.

ssh -o ConnectTimeout=10 user@ABC <<HERE
----- doing some stuff here----
HERE

Ouput -

Password:

O script reside no XYZ. Eu estou correndo de XYZ e tentando SSH ABC. Se ele solicitar senha, saia do script imprimindo uma mensagem.

    
por Vivek Pandey 11.10.2018 / 11:58

3 respostas

0

Adicione a opção PreferredAuthentications=publickey à sua string de conexão:

ssh -o PreferredAuthentications=publickey -o ConnectTimeout=10 user@ABC

O código de saída será 255 e você receberá esta informação:

user@ABC: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

    
por 11.10.2018 / 12:06
0

tente

ssh -o BatchMode=yes

de acordo com man 5 ssh_config

BatchMode

       If set to “yes”, passphrase/password querying will be disabled.
         In addition, the ServerAliveInterval option will be set to 300
         seconds by default.  This option is useful in scripts and other
         batch jobs where no user is present to supply the password, and
         where it is desirable to detect a broken network swiftly.  The
         argument must be “yes” or “no”.  The default is “no”.
    
por 11.10.2018 / 12:07
0

Adicione PasswordAuthentication = não às suas opções ssh

$ ssh -o PasswordAuthentication=no host
user@host: : Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
$ echo $?
255
    
por 11.10.2018 / 12:13