web-dev-qa-db-fra.com

Comment forcer le client ssh à utiliser uniquement l'authentification par mot de passe?

Si j'utilise l'authentification par clé de pub, par exemple: sur un Ubuntu 11.04, comment puis-je configurer le client ssh pour utiliser uniquement l'authentification par mot de passe sur un serveur? (juste nécessaire à cause du test des mots de passe sur un serveur, où je me connecte par défaut avec la clé)

J'ai trouvé un moyen:

mv ~/.ssh/id_rsa ~/.ssh/id_rsa.backup
mv ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.backup

et maintenant on me demande un mot de passe, mais existe-t-il des moyens officiels?

414
LanceBaynes

J'ai récemment eu besoin de cela aussi, et j'ai trouvé ceci:

ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no example.com

Vous devez vous assurer que le client n'est pas configuré pour interdire l'authentification par mot de passe.

636
scoopr

J'ai découvert un raccourci à cet effet:

ssh user:@example.com

Notez les deux points (:) et le mot de passe vide après.

174
Halil Özgür

En plus de la méthode publiée par scoopr, vous pouvez définir les options par hôte dans votre fichier de configuration client ssh.

Dans ton .ssh répertoire, créez un fichier appelé config (s'il n'existe pas déjà) et définissez les autorisations sur 600, vous pouvez ensuite créer des sections commençant par

Host <some hostname or pattern>

puis définissez les options par hôte après cela, par exemple,

Host bob.specific.foo
user fred

Host *.home.example
user billy
port 9191

afin que vous puissiez avoir

Host server.to.test
PubkeyAuthentication=no

dans ce fichier, puis simplement

ssh server.to.test

et l'option sera récupérée.

38
EightBitTony

J'ai récemment eu besoin de cela, mais aucune des options ci-dessus n'a fonctionné, ssh -v a montré que les options de ligne de commande sont passées via -o le commutateur a été écrasé par les valeurs spécifiées dans mon ~/.ssh/config fichier.

Ce qui a fonctionné était le suivant:

ssh -F /dev/null <username>@<Host>

Depuis la page de manuel ssh:

 -F configfile
     Specifies an alternative per-user configuration file.  If a
     configuration file is given on the command line, the system-wide
     configuration file (/etc/ssh/ssh_config) will be ignored. The default 
     for the per-user configuration file is ~/.ssh/config.

Crédits à cette réponse: Comment puis-je faire en sorte que ssh ignore .ssh/config?

14
adeelx

J'ai essayé quelques-unes de ces réponses, mais ssh -v continuait de montrer que mes clés publiques étaient retirées de mon répertoire personnel. Cependant, spécifier un faux fichier d'identité a fait l'affaire pour moi:

ssh -i /dev/null Host

Je dois le faire en permanence (pour contourner le serveur SSH cassé dans une PDU montée en rack APC - rester loin loin de ces choses si vous vous souciez de la sécurité - donc j'ai fini par mettre l'option dans mon fichier de configuration:

Host apc1 apc2
KexAlgorithms +diffie-hellman-group1-sha1
IdentityFile /dev/null
6
miken32

Et assurez-vous également qu'il n'y a pas de BatchMode=yes actif dans .ssh/config. Sinon, vous n'avez aucune chance d'obtenir une invite de mot de passe interactive.

2
Gunnar Tiedt

Je suis peut-être le seul au monde à avoir ce problème, mais j'avais un ssh d'un autre système d'exploitation en cours d'exécution (choco ssh dans Windows dans un cygwin Shell) vu via which ssh

La solution était donc de

 /usr/bin/ssh [email protected]

Notez le chemin complet. Je l'ai fait après avoir exécuté cyg-get openssh

1
Jonathan

Les réponses @scoopr et @Halil Özgür n'ont pas fonctionné pour moi.

Cela a fonctionné pour moi:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected]

Source: http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-Host-key-checking.html

1
shrx