SSH Login auf Debian 12

  • Distrowahl
    Fedora

    Ich versuche derzeit mein ssh Login von meinen debian 12 servern abzusichern. Jedoch funktioniert scheinbar nicht einmal das ändern des Ports. Ich habe in dem sshd_config file meines Servers die Zeile (Port 1234) hinzufgefügt. Dies ist die einzige zeile in der der Port defniniert wird. Jedoch selbst wenn ich den sshd service neu starte und mir den status des services mit systemctl ausgeben lasse lauscht dieser noch auf Port 22. Es scheint fast so als würde der deamon nicht auf die Konfigurationsdatei zurückgreifen.

  • Ich habe es eben auf einem Debian 12 Server ausprobiert.

    Die Config ist /etc/ssh/sshd_config

    Port 222

    Wenn ich den Port von 22 auf 222 ändere und den Service neu starte:

    sudo systemctl restart sshd

    Dann bin ich aktuell noch eingeloggt (das ist auch gut so) - Neue Logins gehen auf den geänderten Port 222

    Kannst du uns schreiben welchen Befehle du eingibst?

  • Als erstes hab ich wie schon beschrieben die Zeile Port xxx am ende der sshd_config Datei hinzugefügt.

    Danach habe ich den service mit "sudo systemctl restart sshd" neu gestartet. Wenn ich dann mit "sudo systemctl status sshd" den status mir ausgeben lasse steht unten in den logs, dass der server auf dem alten port 22 lauscht. Wenn ich dann versuche mich erneut anzumelden komme ich mit port 22 noch rein. Sobald ich mit -p den neuen port als parameter mit angebe bekomme ich ein connection refused.

  • So wie ich es sehe machst du alles richtig.

    Es gibt in der sshd_config bei mir noch diesen Eintrag:

    Include /etc/ssh/sshd_config.d/*.conf

    Normalerweise ist in diesem Ordner /etc/ssh/sshd_config.d/ nichts eingetragen. Ich würde das mal überprüfen.

  • Das habe ich auch schon überprüft. In der Datei steht auch nichts drinnen. Ich habe die Zeile auch schon auskommentiert, was jedoch nichts am Verhalten geändert hat.

  • Im Normalfall sollte der Punkt Port auch bereits in der sshd_conf vorhanden sein.

    Was gibt denn

    Code
    cat /etc/ssh/sshd* | grep Port

    aus? Der Befehl muss vermutlich als root ausgeführt werden da ein normaler User die Datei nicht lesen/bearbeiten darf.

  • ssh auf debian 12 servern konfiguriere ich meistens so:

    nach dem installieren erstmal einen normalen benutzer [blabla] anlegen und sudo installieren!

    ich persönlich deaktiviere den root user sobald ich damit nichts mehr machen muss. (sudo su wenns sein muss)

    wichtig: wenn Du hier mit beginnst, schliesse dieses terminal erst, wenn alles! fertig ist. sonst kannst Du dich ausschließen, bis hin zu "hier geht nix mehr, neuinstallation"

    erstmal die ssh config:
    sudo nano /etc/ssh/sshd_config

    Speichern und schließen mit [STRG/CTRL] + O und [STRG/CTRL] + X

    jetzt auf deinem system (sollte eigentlich in alles distros funktionieren?) einen schlüssel für den server erstellen:

    mkdir -p ~/.ssh/meinekeys/ && ssh-keygen -t ed25519 -f  ~/.ssh/meinekeys/servername

    hochladen auf den server:

    ssh-copy-id   -i  ~/.ssh/meinekeys/servername.pub  blabla@deineserverip

    und ein neues terminal zum testen öffnen (das alte offen lassen!)

    ssh  'blabla@deineserverip'   -i  ~/.ssh/meinekeys/servername

    nochmal testen ob sudo funktioniert:

    sudo apt update

    wenn das klappt, ist alles fertig, jetzt den ssh server neustarten um die änderungen an der sshd_config zu übernehmen:

    sudo /etc/init.d/ssh restart

    jetzt noch ein terminal öffnen zum login test (die anderen noch offen lassen):

    ssh  'blabla@deineserverip'  -p deinport -i  ~/.ssh/meinekeys/servername

    wenn das funktioniert, ist alles fertig, jetzt kannst du die anderen terminals schließen.

    ich empfehle hier dann noch den einsatz von UFW dazu aber das ist ein anderes thema :)

    Die SSHD config hier ist ein beispiel für normale nutzung als webserver oder testserver, das kann natürlich beliebig verändert werden, wenn anders gebraucht.

    Gruß

  • user917245

    Könntest du (wenn du willst) uns die Ausgabe von

    Code
    egrep -v '^#|^$' /etc/ssh/sshd_config

    hier schicken (privates entfernen). Eventuell lässt sich etwas erkennen

    Code
    Include /etc/ssh/sshd_config.d/*.conf
    KbdInteractiveAuthentication no
    UsePAM yes
    X11Forwarding yes
    PrintMotd no
    AcceptEnv LANG LC_*
    Subsystem       sftp    /usr/lib/openssh/sftp-server
    Port 1234
  • Im Normalfall sollte der Punkt Port auch bereits in der sshd_conf vorhanden sein.

    Was gibt denn

    Code
    cat /etc/ssh/sshd* | grep Port

    aus? Der Befehl muss vermutlich als root ausgeführt werden da ein normaler User die Datei nicht lesen/bearbeiten darf.

    #Port 22
    #GatewayPorts no
    Port 1234
    cat: /etc/ssh/sshd_config.d: Is a directory

  • Ich würde Mal versuchen den sshd Dienst über systemd zu beenden und dann die Dienst von Hand zu starten via

    Code
    sshd -D -f /etc/ssh/sshd_config

    Dann sollte man beim starten ja sehen welchen Port er benutzt.

  • Ich würde Mal versuchen den sshd Dienst über systemd zu beenden und dann die Dienst von Hand zu starten via

    Code
    sshd -D -f /etc/ssh/sshd_config

    Dann sollte man beim starten ja sehen welchen Port er benutzt.

    Ich bekomme daraufhin nur folgenden output:

    user@server:~$ sudo sshd -D -f /etc/ssh/sshd_config
    sshd re-exec requires execution with an absolute path


    Wenn ich mir aber mit systemctl den status ausgeben lasse sehe ich in den logs folgendes:


    Jan 23 08:53:42 server systemd[1]: Stopping ssh.service - OpenBSD Secure Shell server...
    Jan 23 08:53:42 server systemd[1]: ssh.service: Deactivated successfully.
    Jan 23 08:53:42 server systemd[1]: Stopped ssh.service - OpenBSD Secure Shell server.
    Jan 23 08:53:42 server systemd[1]: Starting ssh.service - OpenBSD Secure Shell server...
    Jan 23 08:53:42 server sshd[1793]: Server listening on :: port 22.
    Jan 23 08:53:42 server systemd[1]: Started ssh.service - OpenBSD Secure Shell server.


    Vielleicht hilft das?

  • Oh okay dass wusste ich nicht dass sshd jetzt den ganzen Pfad benötigt.

    Also muss der Befehl

    Code
    /usr/sbin/sshd -D -f /etc/ssh/sshd_config

    lauten.

    Ich hoffe der Pfad ist richtig, wenn nicht kann man mit

    which sshd

    den richtigen Pfad anzeigen lassen


    Naja die Statusmeldungen bringen nicht viel denn da steht ja wieder Port 22, es steht aber nicht dabei wo er diese Config her bekommt.

    Was nur komisch ist, dass der Server in der gleichen Sekunde beendet und gestartet wird also war der Server nie down.

    Ist dass dein Privat Server oder ein gehosteter?

  • Ist mein privater Server. Bei dem Befehl oben kommt leider nichts zurück, wie als würde er nicht mehr reagieren.

    Was ich jedoch herausgefunden habe, dass jetzt nachdem neustart des sshd services der Server über Port 22 und Port 1234 erreichbar ist.

  • Durch die Option -D läuft der sshd Dienst nicht im Hintergrund sondern wie ein normales Programm, wenn dann ein Login Versuch kommt sollte dieser in dem Fenster angezeigt werden.

    Er sollte auch auf beiden Ports erreichbar sein, denn du hast ja einen 2ten ssh Server gestartet.

  • Aber er läuft auf beiden Ports also 22 und 1234?

    Okay hab Grade noch Mal geschaut, man muss -D -d angeben -D dass er nicht in den Hintergrund geht und -d damit er Nachrichten anzeigt.

    Die große Frage ist jetzt warum der systemd sshd Dienst immer noch auf Port 22 läuft obwohl die sshd_config ja funktioniert.

  • Ah okay. Also ich hab jetzt mal das -d noch dazu geschrieben. Wenn ich mich mit Port 22 verbinde komme ich zwar rein aber am Server passiert nichts. Wenn ich jedoch Port 1234 verwende rastet die Konsole am Server aus. Vllt ist da noch im Hintergrund ein zweiter ssh server der auf port 22 lauscht, den ich dann immer anspreche.

    Könnte fail2ban evtl. hier noch in irgendeiner art und weise mit rein spielen? Das ist das einzige, was ich nach dem deployen der vm noch installiert habe.

  • Es laufen auch 2 ssh Server

    Wenn du dich über Port 22 einloggst loggst du dich auf dem ssh Server ein der über systemd.sshd gestartet wurde.

    Port 1234 ist der sshd Server den du mit dem Befehl gestartet hast und das "ausrasten" führt der Server in dem Moment aus wenn du eine Verbindung aufbaust.

    Ich wollte nur herausfinden ob die sshd_config fehlerhaft ist oder nicht, die funktioniert aber denn der 2te Server läuft ja auf dem richtigen Port.

    Die große Frage ist nun warum der von systemd gestartete Server die Config Datei nicht einliest.

    Ich kenn mich leider mit systemd auch nicht besonders aus da ich es nicht benutze.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!