So deaktivieren Sie das Kennwort für den erneuten Versuch im Befehl ssh

11

Ich möchte, dass der Befehl ssh nur eine Chance beim Eingeben des Passworts zulässt, wenn das Passwort beim ersten Mal falsch war, wird der ssh zurückgegeben

Permission denied (publickey......).

Gibt es ein Flag, das den SSH anweist, das Passwort nur einmal anzufordern?

Anstatt:

[nir@dhcppc4 ~]$ ssh [email protected]
[email protected]'s password: 
Permission denied, please try again.
[email protected]'s password: 
Permission denied, please try again.
[email protected]'s password: 
Permission denied (publickey.....).

Ich möchte:

[nir@dhcppc4 ~]$ ssh [email protected]
[email protected]'s password: 
Permission denied (publickey.....).

Die Lösung muss sich auf der Clientseite befinden (z. B. ein Flag für den Befehl ssh oder die Verwendung einer Pipeline), ich kann sie nicht berühren sshd_configoder eine andere Systemkonfigurationsdatei. Da ich im Allgemeinen Software von Drittanbietern erstelle (damit ich weder Schlüssel generieren noch Systemdateien konfigurieren kann), die auf die Server im LAN zugreifen, werden die Kennwörter in der Datenbank gespeichert (daher ist kein zweiter Versuch erforderlich). Und in meinem Code , wenn ich davon ausgehen kann , dass ich nur einen Versuch haben ssh/ scpes wird den entsprechenden Code zu vereinfachen.

Nir
quelle
1
Wie die Antworten zeigen, können Sie dies ändern, aber warum möchten Sie dies tun? Die Leute machen häufig Tippfehler, und die Standardeinstellungen sind so eingestellt, dass solche Schwächen berücksichtigt werden. Eine bessere Frage könnte sein: "Wie sperre ich einen Benutzer, der bei n Anmeldeversuchen fehlgeschlagen ist ?" insbesondere, wenn Sie sich vor böswilligen Anmeldungen schützen möchten.
Msw
Mein Grund ist komplex und lang. Was ich sagen kann ist, dass wenn das Passwort beim ersten Mal falsch war, es auch die folgenden Male falsch sein wird.
Nir
2
Sie möchten die grundlegendste Systemverwaltungsfunktion (Authentifizierung) ausführen, können jedoch keine Systemkonfigurationsdateien berühren? Du hast kein Glück mehr. Wenn Sie Ihren langen und komplexen Grund erklären möchten, können wir möglicherweise das X anstelle des Y sehen , das Sie in Ihrem XY-Problem dargestellt haben
msw
1
Der einzige Weg, wie ich sehen kann, dass dies sogar ein Problem ist, ist, wenn Sie die Kennwortauthentifizierung nicht interaktiv durchführen. In diesem Fall sollte jedes Dienstprogramm, das Sie verwenden , entweder die Möglichkeit haben, nach einem fehlgeschlagenen Kennwort abzubrechen, oder, falls nicht Dann sollte dieses Dienstprogramm Gegenstand dieser Frage sein.
Sammitch
1
Ich stelle auch fest, dass ssh einen fehlgeschlagenen Versuch der Authentifizierung mit öffentlichem Schlüssel feststellt. Haben Sie darüber nachgedacht, Ihren öffentlichen Schlüssel zu kopieren und dies vollständig zu vermeiden?
Sammitch

Antworten:

14

In der Manpage sshd config man 5 sshd_config:

 MaxAuthTries
     Specifies the maximum number of authentication attempts permitted
     per connection.  Once the number of failures reaches half this
     value, additional failures are logged.  The default is 6.

Eine Einstellung von MaxAuthTries 2ist also die Einstellung, die Sie benötigen. sshdmuss danach neu gestartet werden (muss als root ausgeführt werden):

/etc/init.d/ssh restart 

oder

service ssh restart

Auf der Clientseite kann dies mit ssh-Einstellungen festgelegt werden (siehe man 5 ssh_configdie Einstellungen, die Sie anwenden können):

 NumberOfPasswordPrompts
         Specifies the number of password prompts before giving up.  The
         argument to this keyword must be an integer.  The default is 3.

Bearbeiten Sie also Ihre ~/.ssh/configDatei und fügen Sie hinzu:

 Host <name_or_ip_of_host|*>
     NumberOfPasswordPrompts 1

Wo <name_or_ip_of_host|*>die kanonische IP oder der Hostname, die Sie in der Befehlszeile verwenden, oder *für alle Hostverbindungsversuche. Sie können dies auch in der Befehlszeile angeben, ohne Ihre /.ssh/configDatei bearbeiten zu müssen :

  ssh -o NumberOfPasswordPrompts=1 user@hostname 
Drav Sloan
quelle
Bitte siehe Frage bearbeiten. Ich wollte etwas Flag / Pipeline verwenden und keine Änderungen insshd_config
Nir
Ich habe meine Antwort bearbeitet und den clientseitigen Optionen gegeben.
Drav Sloan
0

Schauen Sie sich MaxAuthTries in an sshd_config. Der Standardwert ist 6, denken Sie also daran, dass Sie möglicherweise versuchen, eine Pubkey-Authentifizierung durchzuführen, bevor Sie bei der Auswahl Ihres Werts eine Kennwortauthentifizierung versuchen.

John
quelle