Chroot-SSH-Benutzer zum Basisordner führt zur Ablehnung der Verbindung

2388
kramer65

Ich versuche, jemandem einen SSH-Zugriff auf einen Server (Ubuntu 14.04) zu geben, den ich habe, aber ich möchte ihn auf seinen eigenen Home-Ordner beschränken. Also versuche ich, diesem Tutorial zu folgen .

Ich habe zuerst einen Benutzer ( sudo adduser jailuser) erstellt, der es ermöglicht, sich mit Jailuser anzumelden. Dann fuhr ich mit dem Versuch fort, den Benutzer ins Gefängnis zu stecken, und fügte hinzu /etc/ssh/sshd_config(und ssh neu gestartet):

Subsystem sftp internal-sftp Match Group sftp ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no 

Ich habe dann die Gruppe sftp erstellt:

sudo groupadd sftp 

und führte die folgenden Befehle aus, um den Jailuser zu ändern:

sudo usermod -G sftp jailuser sudo usermod -s /bin/false jailuser sudo chown root:root /home/jailuser sudo chmod 0755 /home/jailuser 

Das Ergebnis ist, dass ich nicht mehr anmelden können: ssh: connect to host xx.xxx.xx.223 port 22: Connection refused.

Da ich eine Art Neuling mit Servermanagement bin, bin ich hier verloren. Weiß jemand, was ich falsch mache? Alle Tipps / Tricks sind willkommen!

1
"Verbindung abgelehnt" bedeutet, dass der SSH-Dienst überhaupt nicht reagiert. Überprüfen Sie das Protokoll auf Fehlermeldungen. Daniel B vor 9 Jahren 1
"Verbindung abgelehnt" bedeutet eigentlich, dass "ssh" überhaupt nicht läuft. Antonis Christofides vor 9 Jahren 1
@DanielB Es scheint, ihr habt recht. Mit den Änderungen an `/ etc / ssh / sshd_config` scheint ssh nicht korrekt neu zu starten. Aber ich habe es genau aus dem Tutorial kopiert, dem ich folgte. Irgendeine Idee, was ich da falsch mache? kramer65 vor 9 Jahren 0
Es ist erwähnenswert, dass sie sich nach dem Festlegen der Shell auf / bin / false nicht über SSH oder lokal an einer Shell anmelden können. Das von Ihnen verwendete Lernprogramm dient zum Einschränken des SFTP-Zugriffs auf ein bestimmtes Verzeichnis für einen Benutzer, der ansonsten KEIN Shell-Zugriff hat. Wenn Sie dies versuchen, ist das in Ordnung ... aber es ist nicht ganz klar, ob es das ist oder nicht. 0xDAFACADE vor 9 Jahren 1

2 Antworten auf die Frage

2
user104318

Ich hatte dieses Problem und das Update bestand darin, "UsePAM yes" über der Zeilengruppe "Subsystem sftp internal-sftp" zu platzieren. Starten Sie ssh neu und es hat ganz schön funktioniert.

1
Kenster

Ich sehe nichts offensichtlich falsch mit den sshd_configZeilen, die Sie gepostet haben. Es scheint, dass es hier drei Möglichkeiten gibt:

  1. Nichts ist wirklich falsch, sshdmuss aber gestartet werden.
  2. sshd ist in der Lage zu laufen, hört jedoch nicht auf die richtige IP-Adresse oder den richtigen Port.
  3. Etwas verhindert den sshdStart.

Für all das Folgende müssen Sie sich rootauf dem SSH-Serverhost befinden.

Führen Sie für (1) etwas wie "ps -fe | grep sshd" aus, um zu sehen, ob sshdes läuft oder nicht. Wenn nicht, starten Sie den SSH-Server. Auf Ubuntu führen Sie Folgendes aus:

/etc/init.d/ssh restart 

Wenn sshdläuft, fahren Sie mit (2) fort. Suchen Sie sshd_confignach den ListenAddress- oder Port- Direktiven. Diese steuern, an welcher IP-Adresse und an welchem ​​Port der Server Verbindungen überwacht. In den meisten Fällen würden Sie diese Kommentare auslassen (um die Standardwerte zu verwenden) oder auf 0.0.0.0 bzw. 22 setzen.

Wenn Sie versucht haben, zu starten sshdund nicht ausgeführt werden, checken Sie zunächst die Protokolldateien /var/logauf Nachrichten von sshd. Sie können angeben, welches Problem es hat. Wenn dies nicht der Fall ist, können Sie das sshdDebugging interaktiv ausführen :

/usr/sbin/sshd -ddd # Listen on the default port 22 /usr/sbin/sshd -ddd -p 1022 # Listen on port 1022 

sshdbleibt mit Ihrem Terminal verbunden und druckt eine Reihe von Debugging-Informationen. Wenn es aus irgendeinem Grund nicht weiterlaufen kann, sollte es Ihnen sagen, warum.