Vraag Hoe maak ik een ssh-foutmelding in plaats van om een ​​wachtwoord te vragen als de openbare-sleutelverificatie mislukt?


Ik heb een script dat meerdere servers bevat met behulp van openbare-sleutelauthenticatie. Een van de servers is gestopt met het inloggen van het script als gevolg van een configuratieprobleem, wat betekent dat het script vastloopt met een "Wachtwoord:" prompt, die het duidelijk niet kan beantwoorden, dus het probeert niet eens de rest van de servers in de lijst.

Is er een manier om de ssh-client te laten weten dat er geen wachtwoord moet worden gevraagd als de sleutelverificatie mislukt, maar in plaats daarvan alleen een fout meldt die verbinding maakt en mijn script laat doorgaan?


91
2017-09-03 10:58


oorsprong




antwoorden:


Voor OpenSSH is er ook BatchMode die naast het uitschakelen van wachtwoordaanwijzingen het zoeken naar wachtwoordzinnen voor sleutels moet uitschakelen.

batchmode

Indien ingesteld op "ja", wordt het zoeken naar wachtwoorden / wachtwoorden uitgeschakeld.     Deze optie is handig in scripts en andere batchtaken waarbij nee     gebruiker is aanwezig om het wachtwoord op te geven. Het argument moet zijn     "Ja of nee". De standaardinstelling is "nee".

Voorbeeld gebruik:

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

120
2017-09-03 12:09





Voeg het volgende toe aan uw ~/.ssh/config:

PasswordAuthentication no

en om wachtwoordverificatie op de server uit te schakelen, voeg dezelfde regel toe aan /etc/ssh/sshd_config en herstart sshd.


12
2017-09-03 11:19



als u geen wachtwoordauthenticatie voor alle ssh-clientverbindingen wilt uitschakelen, kunt u ook opties op de opdrachtregel opgeven. voeg '-oPasswordAuthentication = no' toe aan uw ssh-opdracht. - cas
Dit voorkomt niet dat het wachtwoord wordt gevraagd. Het script van OP blijft hangen. - Joshua Swink


Als u dropbear gebruikt, voegt u gewoon de "-s"optie om wachtwoordverificatie uit te schakelen.


9
2017-09-03 11:54



+1 voor het niet aannemen dat de client openssh is :-) - cas


Op de opdrachtregel (of ~/.ssh/config) die u kunt instellen PreferredAuthentications.

PreferredAuthentications=publickey

6
2017-09-03 11:39



Ik denk dat je op de opdrachtregel de optie tussen aanhalingstekens moet plaatsen en deze vervolgens moet doorgeven aan de optie -o. - Craig Walker
@CraigWalker Je kunt het ook doorgeven zoals het is, d.w.z. ssh -o PreferredAuthentications=publickey - Tobias Kienzler
@CraigWalker U hebt aanhalingstekens nodig als u spaties wilt gebruiken om de optie te scheiden en de waarde b.v. ssh "-oPreferredAuthentications publickey" - Timo