Re: Jessie: OpenSSH internal-sftp Subsystem
Hallo Harald und Olaf,
Am 8. Oktober 2015 um 13:52 schrieb Harald Weidner <hweidner-lists@gmx.net>:
> Hallo,
>
>> wir betreiben verschiedene Webservices, bei denen Kunden per SFTP
>> Uploads machen können, und zwar über das "internal-sftp" Subsystem
>> von OpenSSH. Dies funktioniert auch prinzipiell, allerdings habe ich
>> unter Jessie das Problem der Informationspreisgabe des konkreten
>> Homedirs, wenn man sich probiert per _SSH_ einzuloggen, und der
>> Account eigentlich nur als SFTP-only Account vorgesehen ist.
>
>> user@linux:~$ ssh foo@172.16.1.128
>> Could not chdir to home directory /home/foo: No such file or
>> directory ## <- Um diese Zeile geht es mir
>> This service allows sftp connections only.
Ich sehe diese Zeile nur, wenn ich mich per ssh mit einem
sftp-Benutzer erfolgreich authentifiziert habe.
Bitte prüfe das noch mal in deinem Setup.
> Vermutlich hast du in der /etc/passwd beim User foo /home/foo als
> Homeverzeichnis eingetragen.
>
> Das Problem ist, dass der SSHD nach dem Login und NACH dem chroot()
> auf /home/foo nochmal in das Homeverzeichnis wechseln möchte und es
> das innerhalb der Chroot-Umgebung nicht gibt.
In meinem funktionierenden ssh+sftp-Setup sind ChrootDirectory und
$HOME gleich gesetzt mit
ChrootDirectory %h
so wie bei Olaf.
> Um die Meldung wegzubekommen, kannst du also entweder das gewünschte
> Verzeichnis anlegen, also /home/foo/home/foo.
Das ist nicht notwendig, wenn ChrootDirectory root gehört (siehe unten).
> Oder du trägst in der
> /etc/passwd ein Homeverzeichnis ein, das es in der Chroot-Umgebung
> gibt, z.B. /.
Bitte gar nicht erst angewöhnen und niemals die /etc/passwd direkt
bearbeiten, sondern mit den dafür vorgesehenen Werkzeugen. In diesem
Fall wäre das usermod.
usermod --home /neues/home $ANMELDENAME
> Ich erstelle für solche User immer ein Verzeichnis /home/foo/data
> und trage dann /data als Homeverzeichnis in die /etc/passwd ein.
> /home/foo ist die Chroot-Umgebung und gehört root:root,
> /home/foo/data ist das Arbeitsverzeichnis, in dem der User volle
> Rechte hat.
Das ist wichtig und ist in meinem Setup auch so umgesetzt:
Aller Verzeichnisse im Pfad zum ChrootDirectory müssen root gehören
und group und other dürfen keine Schreibrechte darauf haben.
siehe: man sshd_config (Anschnitt ChrootDirectory)
Wenn das nicht der Fall ist, bekommt der ssh-Client, der sich als
sftp-Benutzer anmelden möchte, keine Fehlermeldung, die darauf
hinweist, auch nicht nach erfolgreicher Authentifizierung. In
/var/log/auth.log wird vermerkt:
sshd[14670]: fatal: bad ownership or modes for chroot directory "/home/..."
>
> Gruß, Harald
Gruß
Matthias Böttcher
Reply to: