Wie deaktiviere ich die ALL-Authentifizierung in sshd? [geschlossen]

7

Hier ist eine Frage, auf die ich absolut keine Antworten gefunden habe: Wie können Sie sshd so konfigurieren, dass jeder ohne Kennwort- oder Schlüsselauthentifizierung frei SSH in die Box kann? Das Ziel ist es, jedem zu ermöglichen, "ssh user @ host" auszuführen und in die Box zu gelangen, ohne ein Passwort angeben oder Schlüssel konfigurieren zu müssen. Ist das überhaupt möglich?

Bevor jemand fragt, bin ich mir sehr bewusst, dass dies in der Praxis eine schlechte Idee ist. Dies ist jedoch nur für einen Sandbox-Server gedacht, den ich zu Lernzwecken verwende.

dreizehnten
quelle
@krisFR versuchte nicht, es zu brechen, aber ich war wirklich nur neugierig, ob dies überhaupt möglich war.
13.
2
Für zukünftige Leser gibt es hierfür tatsächlich einen gültigen Anwendungsfall. Konfigurieren Sie den Server so, dass beim Anmelden eine Shell ausgeführt wird, um ein bestimmtes Programm zu starten. Dies geschieht manchmal mit Telnet (versuchen Sie es mit telnet towel.blinkenlights.nleinem Beispiel), aber wenn Sie aus irgendeinem Grund eine verschlüsselte Verbindung wünschen, funktioniert dies als Ersatz.
Skylar Ittner
1
Ebenso habe ich eine Reihe von Geräten bei Kunden, die über eine Linux-basierte Firmware verfügen. Immer wenn sie booten, ssh sie in meinen Server (der sshd zwingt sie, "sleep 7200" auszuführen) und öffnen einen Reverse-Tunnel, damit ich in sie ssh kann. Eines Tages versuchte eine der Boxen, in meinen Server zu ssh, aber fehlgeschlagen; Durch die vorübergehende Aktivierung von authentifizierungslosem SSH (und das Ergreifen der erforderlichen Vorsichtsmaßnahmen) konnte ich die Box von der Fernbedienung aus reparieren und mir eine 5-stündige Reise zum Kunden und zurück ersparen.
Guntram Blohm unterstützt Monica

Antworten:

12

Haftungsausschluss: Ich würde dies niemals empfehlen.

Ich gehe davon aus, dass dies für ein LAN-System ist, ich hoffe nicht für ein Internet-System, aber Sie können einen Benutzer ohne Passwort erstellen und die folgende Option in der OpenSSHd-Konfiguration aktivieren:

PermitEmptyPasswords yes

Um ein Kennwort von einem Benutzer zu entfernen, können Sie es -dmit passwd verwenden.

passwd -d username

Der richtige Weg mit SSH-Schlüsseln

Sie generieren ein SSH-Schlüsselpaar für sich selbst. Wie Sie dies generieren, hängt von Ihrem Client ab. Für Linux ist es ssh-keygen. Sie können beim Generieren des Schlüssels ein leeres Kennwort verwenden, damit Sie beim Anmelden kein Kennwort eingeben müssen.

Auf Ihrem Server können Sie den öffentlichen Schlüssel (id_rsa.pub) in einer Zeile in der Datei authorized_keys speichern, die sich normalerweise im Benutzerverzeichnis befindet .ssh. Diese Datei muss möglicherweise erstellt werden. (Für einen einzelnen Schlüssel sollte das Kopieren von id_rsa.pub auf den Server als ~ / .ssh / autorisierte_Tasten ausreichen.)

Die private Schlüsseldatei sollte niemals öffentlich veröffentlicht werden, sondern kann für jeden freigegeben werden, der Zugriff auf diesen user @ machine haben möchte.

Devon
quelle
Danke Devon, das ist eine sehr einfache und unkomplizierte Lösung! Ja, ich teste dies tatsächlich auf einem LAN-System. Ich wusste auch über den richtigen Weg Bescheid, aber diese Frage war wirklich aus Neugier, weil sie so einfach schien, aber es gab anscheinend nichts bei Google, was darauf hinwies, wie dies getan werden könnte.
13.
@trinth, dachte ich. Ich habe das meistens dort geschrieben, wenn zukünftige Benutzer sich fragen, wie sie auf einen Server zugreifen können, ohne ein Passwort eingeben zu müssen.
Devon
1
Beachten Sie, dass PAM standardmäßig auch leere Kennwörter verweigert. So müssen Sie entweder passieren nullokzu pam_unix.sofür den authAbschnitt (in /etc/pam.d/sshoder aus einer Datei enthält es, in der Regel common-auth), oder Sie müssen deaktivieren PAM in sshd mit UsePAM no(Herstellung sshd Lese- /etc/passwdund /etc/shadowselbst).
Matthijs Kooijman