Wie kann ich einen Benutzer nur für SFTP erstellen?


15

Ich habe dem System über das adduserTool einen Benutzer hinzugefügt . Dann habe /etc/passwdich versucht, das /bin/bashzu /sbin/nologinoder zu ändern /dev/null, aber keines davon hat funktioniert.

Ich möchte, dass der Benutzer nicht die Möglichkeit hat, eine interaktive Shell zu erhalten und diese nur zu verwenden sftp. Gibt es einen Weg?

Ich weiß, dass es hier schon einmal gefragt wurde, aber es scheint, dass niemand eine zufriedenstellende Antwort gegeben hat.


Was meinst du mit "kein Glück"?
Paweł Brodacki

Ich meinte, dass das Remote-scp / sftp nicht funktioniert. Ich löste es die scponly - Shell wie Iain vorgeschlagen
Toni Rosa

Antworten:


9

Der Befehl, den Sie zum Ändern der Shell verwenden sollten, lautet chsh . Die Nologin-Shell kann /sbin/nologinoder sein /usr/sbin/nologin(überprüfen Sie, welche Sie haben, indem Sie hineinschauen /etc/shells), /bin/falsewäre aber wahrscheinlich eine bessere Wahl.

chsh -s /bin/false user

Sie sollten in Betracht ziehen, so etwas wie scponly einzurichten, das genau das tut, was Sie wollen.


Danke für deine Antwort. Ich habe es mit den Shells in / etc / shell ohne Glück versucht ... / bin / false gibt eine "verlorene Verbindung" und / sbin / nologin gibt ein "Dieses Konto ist derzeit nicht verfügbar" zurück. Ich werde es nur versuchen
Toni Rosa

Ich habe es mit der Scponly-Shell gelöst! Prost
Toni Rosa

3
Diese Antwort ist die Nadel im Heu! Stellen Sie sicher /bin/falseund /bin/nologinsind tatsächlich verfügbar in /etc/shells!
Afr

@Afri Gut, aber ... Sie sollten unbedingt serverfault.com/questions/328395/… lesen . Dies ist ziemlich stark kontraindiziert.
Reinderien

@Afr setzen nicht nologinin /etc/shells! serverfault.com/a/328424
RobAu

9

Sie sollten dies auch mit OpenSSH 4.9 und höher tun können, mit dem Sie den Benutzer zusätzlich chrooten können, um die Sicherheit zu erhöhen.

In Ihrem /etc/ssh/sshd_config:

Match User user
ChrootDirectory /home/user
ForceCommand internal-sftp
AllowTcpForwarding no

Dann renne:

chsh -s /bin/false user
chown root:root /home/user
mkdir /home/user/uploads
chown user /home/user/uploads

Der Benutzer kann nur in / home / user / uploads schreiben.

https://debian-administration.org/article/590/OpenSSH_SFTP_chroot_with_ChrootDirectory


+1 Ich habe dies auf meine Liste gesetzt, um es zu untersuchen.
user9517 supportedGoFundMonica

1
Ich habe es verwendet und es funktioniert einwandfrei. Sie können dem Benutzer auch die Möglichkeit geben, sich mit einer Shell in der Chroot-Umgebung anzumelden. In diesem Fall müssen Sie jedoch wie erwartet ein Minimum an Bibliotheken und einigen anderen Dienstprogrammen kopieren. Hierfür bietet sich das Jailkit ( olivier.sessink.nl/jailkit ) an.
Eduardo Ivanec

Danke, ForceCommand war ein Hinweis. Ich brauche keine Chroot, möchte mich aber mit Dienstkonten bei SFTP anmelden.
AnrDaemon


1

Sie können einen Benutzer mit hinzufügen -s /bin/false, um dessen Shell zu deaktivieren, aber was Sie wirklich in die Einrichtung einbeziehen sollten, ist ein chrooted sftp-Konto. Dies wird einen Benutzer in sein eigenes Verzeichnis "einsperren" und ihn daran hindern, auf Dateien oder Verzeichnisse außerhalb des Chroot-Verzeichnisses zuzugreifen oder diese zu ändern.


Danke für deine Antwort, aber es scheint nicht zu funktionieren. Ich erhalte eine "verlorene Verbindung", wenn ich einen Benutzer mit der Shell / bin / false versuche.
Toni Rosa
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.