SSH Key-Login als User

Status
Für weitere Antworten geschlossen.

sesc

Benutzer
Mitglied seit
26. Nov 2008
Beiträge
36
Punkte für Reaktionen
0
Punkte
6
Ich versuche gerade, meine Diskstation so einzurichten, dass ich mich ohne Passwort einloggen kann. Die Anleitung im Wiki (http://www.synology-wiki.de/index.php/SSH_mit_Putty_ohne_Passwort_einloggen) hat mir dabei schonmal geholfen, allerdings ist dort nur die Einrichtung für den root-User beschrieben.

Nach der Anleitung funktioniert es bei mir auch als root, aber ich möchte einem anderen User den Key-Login erlauben. Ich habe nun im Home-Verzeichnis des Users die Datei ~/.ssh/authorized_keys angelegt. Bei dieser auch mittels chmod +600 die Rechte gesetzt. Trotzdem meldet Putty beim Login-Versuch "Server refused our key".
Was muss ich machen, damit das ganze so funktioniert wie gewünscht?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Kommst du denn als dieser non-root User ohne key mit PW bei ssh überhaupt rein? Hat der User neben dem gültigen Home auch eine gültige Login Shell (in /etc/passwd)? Die Rechte des Verzeichnisses (.ssh) und der authorized_keys stimmen? Sie gehören auch beide deinem User?
Poste sonst mal die Ausgabe von
Code:
ls -all /path/to/.ssh
 

sesc

Benutzer
Mitglied seit
26. Nov 2008
Beiträge
36
Punkte für Reaktionen
0
Punkte
6
Der User kann sich mit Passwort über ssh einloggen, somit müssten Home und Shell gültig sein.

Ich glaube, ich habe gerade das Problem gefunden: In der /etc/passwd ist als Home-Verzeichnis für den User /volume1 eingetragen. Gebe ich als der User in der Konsole aber "cd ~" ein, lande ich in /root. Vermutlich wird also in /root/.ssh nach dem Key-File gesucht. Aber in /root hat der User keinen Zugriff.

Wie stelle ich das Home-Verzeichnis für einen User richtig ein, so dass es auch wirklich greift?

Der Eintrag in der passwd sieht zur Zeit so aus:
aaa:x:1026:100:Name:/volume1:/opt/bin/bash

Das ist doch eigentlich korrekt, oder nicht?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Der Eintrag in der passwd sieht zur Zeit so aus:
aaa:x:1026:100:Name:/volume1:/opt/bin/bash

Das ist doch eigentlich korrekt, oder nicht?
Die Homeverzeichnisse der User liegen unter /volume1/homes/aaa. Also stell den Homeverzeichnis für diesen User korrekt ein und dann sollte es eigentlich klappen
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.016
Punkte für Reaktionen
272
Punkte
393
Hallo,
dazu muß natürlich im DSM unter Benutzer Benutzer-Home aktiviert sein.

Gruß Götz
 

sesc

Benutzer
Mitglied seit
26. Nov 2008
Beiträge
36
Punkte für Reaktionen
0
Punkte
6
Eine manuelle Änderung in der passwd reicht also nicht, um das Home-Verzeichnis festzulegen? Ohne Aktivierung von Benutzer-Home gibt es kein richtiges Home-Verzeichnis, auch wenn ich es dort festlege?

Hm, dann muss ich wohl doch mal daran. Eigentlich wollte ich vermeiden, dass außer root und diesem einen User irgendein anderer User ein Home-Verzeichnis bekommt.

Aber danke für den Tipp, probiere ich heute Abend aus, vielleicht klappt es ja damit.
 

jojoo

Benutzer
Mitglied seit
27. Feb 2011
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
hei.
(zumindest bei mir) klappt das nicht, weil sshd scheinbar fest in /root nach den keys sucht. habe ich rausgefunden indem ich mich via telnet eingeloggt habe und den ssh server im debug modus gestartet habe.
folgende dinge habe ich versucht, allerdings ohne erfolgt:

  • in /etc/profile wird /root fest als $HOME kodiert, das hab ich auskommentiert, bzw, testweise ein benutzerverzeichnis angegeben, sshd sucht immernoch in /root/.ssh nach den keys.
  • /bin/sh ist als loginshell gesetzt, das ist ein link auf busybox. das habe ich mal durch die bash (aus ipkg) ersetzt, immer noch kein erfolg
momentan habe ich keine ideen mehr :(
ich will mich wirklich auch per key einloggen, zwecks unison
-jojoo
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
dann leg doch für deinen User eine eigene .profile Datei in dessen Homeverzeichnis. Das Home ist ja durch /etc/passwd festgelegt. Jetzt legst du dort einfach eine Datei Namens .profile an und gibst ihr folgenden Inhalt
Code:
#!/bin/sh
HOME=/volume1/homes/DEIN_USER
export HOME
und das Script ausführbar machen. Dann meldest du dich mit dem entsprechenden User an und du solltest im korrekten Home landen
 

jojoo

Benutzer
Mitglied seit
27. Feb 2011
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
hei.
wenn ich mich via ssh (mit passwort) normal einlogge und echo $HOME mache (oder cd ~ ) komme ich ins richtige verzeichnis!
wenn root cd ~jojoo/ macht und dann pwd, is er im richtigen verzeichnis!
von daher isses ja doppelt komisch.

ich habe dennoch mal in .profile geschrieben, verändert leider nichts.

er will eben das password, denn er findet den key nicht:

Rich (BBCode):
strawberry> /usr/syno/sbin/sshd -d
debug1: sshd version OpenSSH_5.2p1
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug1: read PEM private key done: type DSA
debug1: private host key: #1 type 2 DSA
debug1: rexec_argv[0]='/usr/syno/sbin/sshd'
debug1: rexec_argv[1]='-d'
debug1: Bind to port 22 on ::.
Server listening on :: port 22.
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.
debug1: Server will not fork when running in debugging mode.
debug1: rexec start in 6 out 6 newsock 6 pipe -1 sock 9
debug1: inetd sockets after dupping: 4, 4
Connection from 192.168.1.4 port 60932
debug1: Client protocol version 2.0; client software version OpenSSH_5.2
debug1: match: OpenSSH_5.2 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.2
debug1: permanently_set_uid: 1024/100
debug1: list_hostkey_types: ssh-rsa,ssh-dss
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST received
WARNING: /etc/ssh/moduli does not exist, using fixed modulus
debug1: SSH2_MSG_KEX_DH_GEX_GROUP sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_INIT
debug1: SSH2_MSG_KEX_DH_GEX_REPLY sent
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: KEX done
debug1: userauth-request for user jojoo service ssh-connection method none
debug1: attempt 0 failures 0
Failed none for jojoo from 192.168.1.4 port 60932 ssh2
debug1: userauth-request for user jojoo service ssh-connection method publickey
debug1: attempt 1 failures 0
debug1: test whether pkalg/pkblob are acceptable
debug1: temporarily_use_uid: 1026/100 (e=0/0)
debug1: trying public key file /root/.ssh/authorized_keys
debug1: restore_uid: 0/0
debug1: temporarily_use_uid: 1026/100 (e=0/0)
debug1: trying public key file /root/.ssh/authorized_keys
debug1: restore_uid: 0/0
Failed publickey for jojoo from 192.168.1.4 port 60932 ssh2
debug1: userauth-request for user jojoo service ssh-connection method keyboard-interactive
debug1: attempt 2 failures 1
debug1: keyboard-interactive devs 
debug1: auth2_challenge: user=jojoo devs=
debug1: kbdint_alloc: devices ''

ich hab keine ahnung an was das liegen kann

update: mit dem sshd binary aus ipkg genau das gleiche
-jonas
 
Zuletzt bearbeitet:

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Du musst meine Tipps nicht probieren, keiner zwingt dich dazu. Allerdings halte ich mich dann raus aus deinen Problemen. Entscheidend ist wo du direkt nach dem Login landest (also ohne cd). Und das ist afaik IMMER /root
 

jojoo

Benutzer
Mitglied seit
27. Feb 2011
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
hei.
ich habe deinen tipp ja ausprobiert, und bin über weitere dankbar!
das gepostete log ist nach der umsetzung deines tipps entstanden (vorher sah es allerdings genauso aus)

ich lande wie auch schon vorher im korrekten homeverzeichnis, wie es in /etc/passwd eingestellt ist (/var/services/homes/jojoo oder /var/homes/jojoo, habe beides ausporbiert, lande nach login im jeweils eingestellten, key klappt bei beiden nicht)
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Okay dann probier jetzt bitte das folgende:
Bau die Anpassung wieder aus (also profile umbenennen) und melde dich als dieser User an. Dann einfach pwd als Kommando absetzen. Eigentlich müsste dir /root angezeigt werden. Dann die profile wieder umbennenen, dann sollte nach pwd /volume1/homes/DEIN_USER
Und du hast profile auch ganz sicher als versteckte Datei .profile angelegt? Die Rechte stimmen? Und die Datei ist ausführbar? .profile sollte immer abgearbeitet werden bei einem Login via Shell
 

jojoo

Benutzer
Mitglied seit
27. Feb 2011
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
login mit "intakter .profile
Code:
strawberry> cat .profile
#!/bin/sh
HOME=/volume1/homes/jojoo
export HOME
strawberry> pwd          
/volume1/homes/jojoo
strawberry> grep "jojoo" /etc/passwd
jojoo:x:1026:100:Eigentuemer:/var/services/homes/jojoo:/bin/ash
strawberry> ls -al .profile 
-rwxr-xr-x 1 jojoo users 48 Feb 28 12:38 .profile
strawberry> mv .profile .pro-back

login mit verschobener .profile
Rich (BBCode):
strawberry> pwd
/volume1/homes/jojoo
strawberry> ls -al  
total 20
drwxr-xr-x 3 jojoo users 4096 Feb 28 14:47 .
drwxr-xr-x 8 root  root  4096 Feb 27 23:12 ..
-rw------- 1 jojoo users  294 Feb 28 12:54 .bash_history
-rwxr-xr-x 1 jojoo users   48 Feb 28 12:38 .pro-back
drwx------ 2 jojoo users 4096 Feb 27 23:15 .ssh

klappt also leider auch nicht, bin im verzeichnis das /etc/passwd angibt, keys gehen immernoch nicht, weil er immernoch in /root sucht
:(

aber trotzdem vielen dank bis hierhin
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Hast du bereits die Beta-Firmware installiert?
Und probier mal noch die Loginshell deines Users auf sh zu stellen. Bin mir ned sicher, dass ash auch userspezifische profile Files verarbeitet. Oder probiers mit der bash
 
Zuletzt bearbeitet:

jojoo

Benutzer
Mitglied seit
27. Feb 2011
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
ich wüsste nicht, dass ich beta-firmware installiert habe.
ich habe die firmware nicht verändert, habe die dsm anfang februar gekauft.
das einzige was ich verändert habe ist, ipkg und pyload installieren.

beim login und im hintergrund steht dsm 3.0, uname -a sagt
Linux strawberry 2.6.32.12 #1354 Sat Oct 23 00:49:24 CST 2010 armv5tel GNU/Linux

wo finde ich raus welche firmware ich habe?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Wenn du nicht manuell die Beta installiert hast, dann hast du die Beta bestimmt nicht drauf :)
Verwendest du denn den ipkg ssh oder den ssh aus der Firmware? Ich gucke mir das heute abend mal bei mir zu Hause an, habe aber kein Problem damit als non-root-User via Zertifikat einzuloggen
 

jojoo

Benutzer
Mitglied seit
27. Feb 2011
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
hei.
ich verwende das binary aus der firmware.
ich habe allerdings auch mal das binary aus dem ipkg verwendet, das ging auch nicht.

was ging, ist dropbear, also auch mit keys, aber ich würde ungerne die start/stoppscripte und so ändern, und eigentlich bin ich mit openssh auch bisher gut gefahren.

-jonas
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Also ich habe das gerade bei mir zu Hause angeschaut. Es geht problemlos, kann mich also als non-root mittels Cert sauber anmelden. Folgende Punkte sibd wichtig:
1. .ssh Verzeichnis im home nur chmod 0700
2. authorized_keys File in .ssh nur chmod 0600
3. kontrollier auch mal das systemweite profile unter /etc/profile. Steht dort noch hardcodiert ein HOME=/root drin? Falls ja einfach die Zeile mal auskommentieren

Wie gesagt bei mir funzt es.
 

onasco

Benutzer
Mitglied seit
04. Jan 2009
Beiträge
23
Punkte für Reaktionen
0
Punkte
0
Status
Für weitere Antworten geschlossen.
 

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