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 ssh
und meine sftp
Verbindung 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 restart
und 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_config
Handbuch steht, dass
Das
ChrootDirectory
muss 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 (normalerweisesh(1)
) und Basisknoten/dev
wienull(4)
,zero(4)
,stdin(4)
,stdout(4)
,stderr(4)
, undtty(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/log
unter einigen Betriebssystemen möglicherweise das Chroot-Verzeichnis (siehesftp-server(8)
für Details).
Sie sollten das dev
Verzeichnis erstellen und dann das /dev/MAKEDEV
Skript 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-sftp
verwendet werden sollte .Match
Hinweis: Der Auszug stammt aus OpenSSH 7.5, da ich keinen Zugriff auf eine ältere SSH-Implementierung habe.