Wie bringe ich ssh zum Scheitern, anstatt nach einem Kennwort zu fragen, wenn die Authentifizierung mit öffentlichem Schlüssel fehlschlägt?


107

Ich habe ein Skript, das mehrere Server mit öffentlicher Schlüsselauthentifizierung überprüft. Einer der Server hat aufgrund eines Konfigurationsproblems aufgehört, das Skript anzumelden. Dies bedeutet, dass das Skript an der Eingabeaufforderung "Password:" hängen bleibt, die es offensichtlich nicht beantworten kann, sodass der Rest der Server nicht einmal ausprobiert wird In der Liste.

Gibt es eine Möglichkeit, den ssh-Client anzuweisen, kein Kennwort einzugeben, wenn die Schlüsselauthentifizierung fehlschlägt, sondern nur einen Verbindungsfehler zu melden und mein Skript weiterlaufen zu lassen?

Antworten:


138

Für OpenSSH gibt es den BatchMode, der zusätzlich zur Deaktivierung der Kennwortabfrage die Abfrage von Passphrasen für Schlüssel deaktivieren sollte.

BatchMode

Bei der Einstellung „yes“ wird die Abfrage von Passphrasen / Passwörtern deaktiviert. Diese Option ist nützlich in Skripten und anderen Batch-Jobs, bei denen kein Benutzer zur Eingabe des Kennworts anwesend ist. Das Argument muss "Ja" oder "Nein" sein. Die Standardeinstellung ist "nein".

Beispielnutzung:

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

Diese deaktivierte die Authentifizierung mit öffentlichen Schlüsseln für mich. Ich habe jedoch irgendwann ssh user @ host -C angegeben. Was für mich arbeiten muss, ist nurssh user@host -oPreferredAuthentications=publickey -C 'echo success'
AB Carroll

20

Fügen Sie Folgendes zu Ihrem hinzu ~/.ssh/config:

PasswordAuthentication no

Fügen Sie zum Deaktivieren der Kennwortauthentifizierung auf dem Server die gleiche Zeile hinzu /etc/ssh/sshd_configund starten Sie den Computer neu sshd.


7
Wenn Sie die Kennwortauthentifizierung nicht für alle SSH-Clientverbindungen deaktivieren möchten, können Sie Optionen auch in der Befehlszeile angeben. Fügen Sie Ihrem ssh-Befehl '-oPasswordAuthentication = no' hinzu.
cas

7
Dies verhindert nicht die Passwortabfrage. OPs Skript bleibt hängen.
Joshua Swink

11

Wenn Sie dropbear verwenden, fügen Sie einfach die -sOption " " hinzu, um die Kennwortauthentifizierung zu deaktivieren.


4
+1 für nicht vorausgesetzt, der Client ist openssh :-)
cas

8

In der Kommandozeile (oder ~/.ssh/config) können Sie einstellen PreferredAuthentications.

PreferredAuthentications=publickey

Ich denke, dass Sie in der Befehlszeile die Option in Anführungszeichen setzen und dann an die Option -o übergeben müssen.
Craig Walker

3
@CraigWalker Du kannst es auch so weitergeben, wie es ist, alsossh -o PreferredAuthentications=publickey
Tobias Kienzler

@CraigWalker Sie benötigen Anführungszeichen, wenn Sie die Option und den Wert durch Leerzeichen trennen möchten, z. B.ssh "-oPreferredAuthentications publickey"
Timo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.