web-dev-qa-db-fra.com

Comment faire échouer ssh plutôt que Demander un mot de passe si l'authentification par clé publique échoue?

J'ai un script qui SSHes 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 est bloqué avec une invite "Password:", à laquelle il ne peut évidemment pas répondre, donc il n'essaie 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 si l'authentification par clé échoue, mais de signaler simplement une erreur de connexion et de laisser mon script continuer?

110
rjmunro

Pour OpenSSH, il existe BatchMode, qui, en plus de désactiver la demande de mot de passe, devrait désactiver la recherche de phrase (s) de passe pour les clés.

Temps différé

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. L'argument doit être "oui" ou "non". La valeur par défaut est "non".

Exemple d'utilisation:

ssh -oBatchMode=yes -l <user> <Host> <dostuff>
145
Kjetil Joergensen
  • Pour désactiver l'authentification par mot de passe pour la tentative de connexion ssh en cours, passez cette option sur la ligne de commande:

    -o PasswordAuthentication=no
    
  • Pour désactiver l'authentification par mot de passe pour toutes les futures connexions à n'importe quel hôte, ajoutez ce qui suit à votre ~/.ssh/config:

    PasswordAuthentication no
    
  • Pour le désactiver uniquement pour certains hôtes, ajoutez ce qui suit à ~/.ssh/config:

    Host host1 Host2 Host3...
        PasswordAuthentication no
    

Les options ci-dessus s'appliquent aux connexions sortantes ssh, c'est-à-dire là où vous essayez de vous connecter à un serveur ssh distant.

Pour désactiver l'authentification par mot de passe sur un serveur ssh (c'est-à-dire qu'il s'applique à toutes les connexions entrantes ssh), ajoutez PasswordAuthentication no à /etc/ssh/sshd_config et redémarrez sshd.

24
cas

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

12
sybreon

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

PreferredAuthentications=publickey
8
Rory