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.

Toni Rosa
quelle
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.

Iain
quelle
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

Eduardo Ivanec
quelle
+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
2

Ich denke, der beste Weg ist mit mysecureshell

http://mysecureshell.sourceforge.net/en/index.html

Sie können einen Benutzer mit dieser Funktion einfach chrooten und bei Bedarf sogar die Bandbreite begrenzen.

Mike
quelle
Ich habe es mit der scponly-Shell gelöst, aber es ist interessant, diese mysecureshell zu kennen
Toni Rosa
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.

Soßengesicht
quelle
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