Comment désactiver l'invite de mot de passe du côté client ssh?

9

J'ai un script qui repose sur l'authentification ssh à clé publique / privée. Le problème est que certains systèmes sont mal configurés et n'ont pas la bonne approbation de clé publique / privée ssh. Lorsque cela se produit, sshdemandez-moi un mot de passe bloquant l'exécution du script. J'ai essayé cette commande:

sudo ssh -o "PasswordAuthentication=no" -o "ChallengeResponseAuthentication=no" root@last-call

Mais on me demande toujours le mot de passe root.

Cricket rouge
la source
Après essais et erreurs, j'ai trouvé l'option dont j'avais besoin. "PreferredAuthentications=publickey"
Red Cricket
est-ce mieux que la solution proposée? (BatchMode)
knocte

Réponses:

9

La manière canonique de le faire est avec l' BatchModeoption:

ssh -o BatchMode=yes …

Selon le manuel :

S'il est défini sur «oui», la requête par mot de passe / mot de passe sera désactivée. Cette option est utile dans les scripts et autres travaux par lots où aucun utilisateur n'est présent pour fournir le mot de passe.

Je m'attendais cependant à ce que la combinaison de PasswordAuthentication=noet ChallengeResponseAuthentication=nosoit suffisante. ssh -vvpourrait donner un indice.

Gilles 'SO- arrête d'être méchant'
la source
Ça marche aussi! $ sudo ssh last-call-2 Password: $ sudo ssh -o "BatchMode=yes" last-call-2 Permission denied (gssapi-keyex,gssapi-with-mic,publickey,password,keyboard-interactive).
Red Cricket