Question Comment faire en sorte que ssh échoue plutôt que de demander un mot de passe si l'authentification par clé publique échoue?


J'ai un script qui ssh'es plusieurs serveurs utilisant l'authentification par clé publique. L'un des serveurs a cessé de laisser le script se connecter en raison d'un problème de configuration, ce qui signifie que le script reste bloqué avec une invite "Mot de passe:", à laquelle il ne peut évidemment pas répondre, de sorte qu'il n'essaye même pas le reste des serveurs. dans la liste.

Existe-t-il un moyen de dire au client ssh de ne pas demander de mot de passe en cas d'échec de l'authentification de la clé, mais simplement de signaler une erreur de connexion et de laisser mon script se poursuivre?


91
2017-09-03 10:58


origine




Réponses:


Pour OpenSSH, il existe également BatchMode qui, outre la désactivation de l'invite de mot de passe, doit désactiver la recherche de mots de passe composés pour les clés.

Temps différé

Si la valeur est «yes», la requête phrase de passe / mot de passe sera désactivée.     Cette option est utile dans les scripts et autres travaux par lots pour lesquels aucune     l'utilisateur est présent pour fournir le mot de passe. L'argument doit être     "Oui ou non". La valeur par défaut est "non".

Exemple d'utilisation:

ssh -oBatchMode=yes -l <user> <host> <dostuff>

120
2017-09-03 12:09





Ajoutez ce qui suit à votre ~/.ssh/config:

PasswordAuthentication no

et pour désactiver l'authentification par mot de passe sur le serveur, ajoutez la même ligne à /etc/ssh/sshd_config et redémarrer sshd.


12
2017-09-03 11:19



Si vous ne souhaitez pas désactiver l'authentification par mot de passe pour toutes les connexions du client ssh, vous pouvez également spécifier des options sur la ligne de commande. ajoutez '-oPasswordAuthentication = no' à votre commande ssh. - cas
Cela n'empêche pas l'invite de mot de passe. Le script d'OP sera toujours bloqué. - Joshua Swink


Si vous utilisez dropbear, ajoutez simplement le "-s"option pour désactiver l'authentification par mot de passe.


9
2017-09-03 11:54



+1 pour ne pas supposer que le client est openssh :-) - cas


Sur la ligne de commande (ou ~/.ssh/config) vous pouvez définir PreferredAuthentications.

PreferredAuthentications=publickey

6
2017-09-03 11:39



Je pense que, sur la ligne de commande, vous devez envelopper l'option entre guillemets, puis la passer à l'option -o. - Craig Walker
@CraigWalker Vous pouvez également le transmettre tel quel, c.-à-d. ssh -o PreferredAuthentications=publickey - Tobias Kienzler
@CraigWalker Vous avez besoin de guillemets si vous souhaitez utiliser des espaces pour séparer l'option et la valeur, par exemple. ssh "-oPreferredAuthentications publickey" - Timo