SSH mit Keys - root funktioniert, admin nicht

pmcl77

Benutzer
Mitglied seit
12. Okt 2015
Beiträge
71
Punkte für Reaktionen
3
Punkte
8
Hi,

Ich habe in /etc/ssh/sshd_config den login für root mit rsa keys aktiviert, dies funktioniert auch ohne probleme. Wenn ich mich aber mit einem admin user ebenso mit keys anmelden will, dann werde ich immer noch nach dem Passwort gefragt. Ich habe schon x guides und how-to's ausprobiert, bekomme es aber nicht hin.

Der public key meines Clients habe ich ssh-copy-id in die .ssh/authorized_keys des entsprechendes users hinterlegt.

Berechtigungen auf der Synology:
user /home 700 (auch mit 711 und 755 probiert)
user /.ssh 755 (auch mit 700 und 711 probiert)
authorized_key 644 (auch 600 probiert)

Meine /etc/ssh/sshd_config schaut aktuell so aus:

PermitRootLogin prohibit-password
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile ~/.ssh/authorized_keys
PasswordAuthentication yes
ChallengeResponseAuthentication yes
UsePAM yes
AllowTcpForwarding no
UsePrivilegeSeparation sandbox # Default for new installations.
UseDNS noChrootDirectory none
Subsystem sftp internal-sftp -f DAEMON -u 000
Match User root
AllowTcpForwarding yes
Match User anonymous
AllowTcpForwarding no
GatewayPorts no
Match User admin
AllowTcpForwarding yes

Wenn ich mit "ssh -vvvv root@synology -i .ssh/id_rsa" einlogge, sehe ich auch, dass der key akzeptiert wird. wenn ich dies mit dem admin user mache, dann werden zwar die pub keys "offeriert" aber es kommt nie dazu, dass dieser auch akzeptiert wird und der Prozess geht zur Passwort Authentifikation über.

mit root (key fingerprint gekürzt, wobei ich glaube dass es kein Sicherheitsproblem wäre, diesen zu teilen).
debug1: Offering public key: /Users/phil/.ssh/id_rsa RSA SHA256:wxZ4pXphDGG
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 60
debug1: Server accepts key: /Users/phil/.ssh/id_rsa RSA SHA256:wxZ4pXphDGG
debug3: sign_and_send_pubkey: using publickey with RSA SHA256:wxZ4pXphDGG
debug3: sign_and_send_pubkey: signing using rsa-sha2-512 SHA256:wxZ4pXphDGG

mit admin user
debug1: Offering public key: /Users/phil/.ssh/id_rsa RSA SHA256:wxZ4pXphDGG
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,password,keyboard-interactive


Ich gerade etwas am Ende mit meinem Latein und verstehe nicht, warum es mit dem admin user nicht funktioniert. Ich hoffe, jemand kann mir tips geben, um dies weiter zu debuggen.

Danke und Gruss

PS: nutze SSH nur Netzwerk intern, also SSH port nicht nach aussen geöffnet.
 
Zuletzt bearbeitet:
@pmcl77, hast Du Dir mal auch dieses Video hereingezogen?
https://www.youtube.com/watch?v=VjoWjX_8E3Q, das stammt von @Tommes hier aus dem Forum.
Als Admin kommt man sehr weit im System, aber vieles „mehr“ natürlich als root. Ich hatte beispielsweise meine externen den USB fest vergeben und das geht nur mit root. Ja, da kann man sich das System „zerstören“ und deswegen lese/gucke ich immer 2-mal bevor ich da rangehe.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: framp
Alles was du mit dem root User machen kannst, kannst du auch mit sudo machen. Wenn es nicht gerade für ein Script nötig ist, dann würde ich mich nie als root anmelden. Es ist aus gutem Grund nicht von Haus aus möglich. Das betrifft nicht nur DSM sondern auch andere Systeme.
 
Alles was du mit dem root User machen kannst, kannst du auch mit sudo machen. Wenn es nicht gerade für ein Script nötig ist, dann würde ich mich nie als root anmelden. Es ist aus gutem Grund nicht von Haus aus möglich. Das betrifft nicht nur DSM sondern auch andere Systeme.
Ja, genau das ist der Grund, warum ich mich mit einem admin user passwordless anmelden möchte, und root dann wieder deaktivieren. (y)
 
Dafür brauchst du den root Account doch gar nicht....
Melde dich mit deinem Adminuser per SSH an. Also Passwort eingeben, wenn er eins verlangt. Danach einfach in ~/.ssh/authorized_keys (chmod 600 und owner dein User) den Public Key eintragen der sich anmelden darf. Datei speichern und das sollte es schon sein. Du musst keine sshd_config dafür bearbeiten.

Edit: Ordner .ssh hat chmod 700
 
Das mit ssh kann jeder betrachten wie er es will.
Wenn ich da rauf will/muss, dann zu 99.999% sitz ich im heimischen Gefilde. Von außerhalb geht es dann mit VPN und das ist dann sozusagen der Notfall.
Wenn dann ssh nicht aktiviert ist, kommst eh nicht rauf.
 
@wegomyway wie kommst du jetzt drauf, dass jemand SSH deaktivieren will. Davon war doch nicht die rede. Es geht um den Zugriff als root. Du kannst dich auch mit deinem Adminuser einfach per SSH anmelden. Wenn du dann für etwas root Rechte brauchst, dann schreibst du einfach sudo dein-befehl und gibst dein Passwort nochmal ein....
 
Es kann sein, dass etwas mit den Dateirechten nicht ganz stimmt. Offenbar nutzt DSM7 ja ACL und mit "ls -el" kann man sich dies anzeigen lassen, da wird bei einem meiner admin user deutlich weniger angezigt als bei anderen.

Das Problem konnte ich aber nun wie folgt lösen. Die folgende Zeile in sshd_config scheint nicht zu funktionieren:

AuthorizedKeysFile ~/.ssh/authorized_keys

über die sshd debug Ausgabe (sudo /bin/sshd -d -p 2222) konnte ich dann beim login mit Admin user festellen:

debug1: trying public key file /root/.ssh/authorized_keys
debug1: Could not open authorized keys '/root/.ssh/authorized_keys': Permission denied

es wird versucht die authorized_keys vom root zu lesen, worauf der admin user aber keinen Zugriff hat. Meine Vermutung ist, dass dieser relative Pfad mit ~ beim Start des sshd servers durch den root user zum absoluten Pfad /root/... konvertiert wird, anstelle zur Laufzeit beim Login.

Nach dem auskommentieren der genannten Zeile schaut es dann gut aus und der login funktiniert nun auch wieder mit keys für admin user.

debug1: trying public key file /var/services/homes/admin/.ssh/authorized_keys
debug1: fd 4 clearing O_NONBLOCK
debug1: /var/services/homes/admin/.ssh/authorized_keys:1: matching key found: RSA SHA256:wxZ4pXphD
debug1: /var/services/homes/admin/.ssh/authorized_keys:1: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding
Accepted key RSA SHA256:wxZ4pXphDGG found at /var/services/homes/admin/.ssh/authorized_keys:1
debug1: restore_uid: 0/0
debug1: get user realname admin => admin
debug1: auth_activate_options: setting new authentication options
debug1: do_pam_account: called
Accepted publickey for admin from 10.11.12.4 port 63429 ssh2: RSA SHA256:wxZ4pXphDGG

Hoffe, dass dies für andere evtl auch hilfreich sein kann.
 
Zuletzt bearbeitet:
Der Eintrag mit ~/ am Anfang ist ja auch falsch. Hier mal der relevante Teil aus der sshd_config:
Code:
# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
#AuthorizedKeysFile .ssh/authorized_keys
Beachte: Da steht keine Tilde vor dem Verzeichnis.
Durch das Auskommentieren gilt wieder der Default.
Hattest Du an dem Eintrag schon mal selber was verstellt?

Nachtrag: Aber auf jeden Fall schön analysiert.
 
Beachte: Da steht keine Tilde vor dem Verzeichnis.
Durch das Auskommentieren gilt wieder der Default.
Hattest Du an dem Eintrag schon mal selber was verstellt?
Ich bin mir nicht mehr sicher, es ist schon ziemlich lange her. Ich hatte das damals beim Umstieg von DSM6 zu 7 geändert, da es mich damals genervt hatte, immer mit sudo arbeiten zu müssen (bei DSM6 war ja der ssh root login per default möglich).

Vermutlich hatte ich damals diese Zeile mit ~ selbst ergänzt, da ich dann aber immer mit root verbunden habe, hat das nie gestört.

Auf jeden Fall bin ich froh, dass ich nun wieder normal mit admin user und keys einloggen kann und somit den direkten root login wieder deaktivieren kann.

@wegomyway wie kommst du jetzt drauf, dass jemand SSH deaktivieren will. Davon war doch nicht die rede. Es geht um den Zugriff als root. Du kannst dich auch mit deinem Adminuser einfach per SSH anmelden. Wenn du dann für etwas root Rechte brauchst, dann schreibst du einfach sudo dein-befehl und gibst dein Passwort nochmal ein....

Genauer gesagt ging es darum, dass ich mit admin mit keys einloggen will, um eben den root login wieder daktivieren zu können.


Danke an alle für eure Inputs.
 
  • Like
Reaktionen: DaveR
Zusatz aus dem sshd debug server:

/etc/ssh/sshd_config line 52: Deprecated option RSAAuthentication
/etc/ssh/sshd_config line 113: Deprecated option UsePrivilegeSeparation

Diese Zeilen kann man also wohl getrost streichen...
 
Gibt's bei mir beides nicht. Wo hast du denn deine ganzen Einstellungen her?
 
Vielleicht irgendwelche Altlasten. Mach doch mal einen Diff von deiner sshd_config mit /etc.defaults/ssh/sshd_config.
 
Ja, das dürften Altlasten bzw etwas sein, dass ich damals vermutlich copy & paste aus einem Guide übernommen hatte. Werde mal den Vergleich mit der defaults machen und mich wieder daran richten.
 
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat