Ein Benutzer kann nicht chrootet werden

Ein Benutzer kann nicht chrootet werden

Mein SSH-Server funktioniert seit 4 Jahren einwandfrei, daher möchte ich einfach einen Benutzer hinzufügen und ihn per Chroot in einen bestimmten Ordner verschieben.

> useradd -m -c /home/thomas -s /bin/sh thomas
> passwd thomas
> chmod 755 /home/thomas
> chown root: /home/thomas
> service ssh restart

Wenn ich das tue,dürfenVerbindung herstellen sshund meine sftpVerbindung funktioniert. Das Problem ist, dass ich in einen bestimmten Ordner chrooten möchte.

> vim /etc/ssh/sshd_config

Fügen Sie am Ende der Datei hinzu:

Match user thomas
    ChrootDirectory /home/%u

Wenn ich das nur hinzufüge, sollte sich doch nichts ändern, oder? Die Konfiguration sollte dieselbe sein und ich sollte weiterhin eine Verbindung herstellen oder SFTP verwenden können. Also starte ich neu service ssh restartund kann keine Verbindung mehr mit SFTP herstellen.

Nur für den Fall:

root@xx:/etc/nginx/sites-enabled# /usr/sbin/sshd -v
sshd: illegal option -- v
OpenSSH_6.0p1 Debian-4+deb7u6, OpenSSL 1.0.1t  3 May 2016
usage: sshd [-46DdeiqTt] [-b bits] [-C connection_spec] [-c host_cert_file]
            [-f config_file] [-g login_grace_time] [-h host_key_file]
            [-k key_gen_time] [-o option] [-p port] [-u len]
root@xx:/etc/nginx/sites-enabled#

Was mache ich falsch?

Antwort1

Im sshd_configHandbuch steht, dass

Das ChrootDirectorymuss die notwendigen Dateien und Verzeichnisse enthalten, um die Sitzung des Benutzers zu unterstützen. Für eine interaktive Sitzung ist dafür mindestens eine Shell (normalerweise sh(1)) und Basisknoten /devwie null(4), zero(4), stdin(4), stdout(4), stderr(4), und tty(4)Geräte erforderlich. Für Dateiübertragungssitzungen mit SFTP ist keine zusätzliche Konfiguration der Umgebung erforderlich, wenn der In-Process-SFTP-Server verwendet wird. Sitzungen, die Protokollierung verwenden, erfordern jedoch /dev/logunter einigen Betriebssystemen möglicherweise das Chroot-Verzeichnis (siehe sftp-server(8)für Details).

Sie sollten das devVerzeichnis erstellen und dann das /dev/MAKEDEVSkript dorthin kopieren. Erstellen Sie mithilfe des Skripts die benötigten Gerätedateien.

Für interaktive Benutzer müssen Sie die erforderlichen Binärdateien und zugehörigen Bibliotheken auch im Chroot installieren.

Der Verweis auf „den In-Process-SFTP-Server“ bedeutet, dass dieser in Ihrem Block ForceCommand internal-sftpverwendet werden sollte .Match

Hinweis: Der Auszug stammt aus OpenSSH 7.5, da ich keinen Zugriff auf eine ältere SSH-Implementierung habe.

verwandte Informationen