serverzeit.de - Logo

SFTP/SCP via SSH

Es wird sicher vorkommen, dass wir Dateien von unserem Client auf den Server übertragen müssen oder wollen. Wir könnten nun einen FTP-Server aufsetzen, z.B. ProFTPD, aber warum nicht einen bereits laufenden FTP-Server verwenden, der zudem noch verschlüsselt überträgt?

Wir haben ja bereits einen SSH-Server laufen und somit ist es bereits möglich, Daten vom Client auf den Server zu übertragen. Das ganze nennt sich dann "SFTP ". Um diese Art der Dateiübertragung nutzen zu können, brauchen wir lediglich einen Client. Diese findet man für verschiedenste Betriebssysteme im Internet.

Bei der Konfiguration gibts du als Host die IP-Adresse bzw. den Hostnamen deines Servers an, als Port den SSH-Port. Benutzername und Passwort müssen nicht neu vergeben werden, verwende einfach die, mit denen du dich auch per SSH anmeldest.

Als Windows-Client empfehle ich bspw. den SSH SecureShellClient oder den den kostenlosen WinSCP-Client.

Unter Linux empfehle ich gFTP oder KASABLANCA. KDE ist Windows mal wieder einen Schritt voraus: KDE-Anwender können im Konqueror auch einfach sftp://<server-adresse> angeben.

Für Mac OS X wurde mir Fugu Cyberduck empfohlen.

Chroot für Systembenutzer

Gerade wenn man SFTP nutzen will hat man anfangs mit dem Problem zu kämpfen, dass jeder Benutzer Leserechte auf eine Vielzahl von Verzeichnissen hat. Dies wollen wir jetzt verhindern, da wir nicht wollen, dass sich unsere Benutzer durch das Dateisystem schnüffeln.

  1. Als erstes installieren wir mal 'ssh2' aus den Ports. SSH2 wird unseren SSH-Dienst ersetzen und die Chroot-Fähigkeit zur Verfügung stellen:

    # cd /usr/ports/security/ssh2 && make install clean

  2. Nach der Installation müssen wir den Dienst noch konfigurieren. Dies erfolgt in der Datei '/usr/local/etc/ssh2/sshd2_config'. Hier setzen wir folgende Parameter:

    - ListenAddress: Hier legen wir fest auf welcher IP der Dienst lauschen soll, den Port legen wir später an anderer Stelle fest.
    - PermitRootLogin: Diesen Parameter setzen wir auf 'No', da wir nicht wollen dass sich root direkt anmelden kann.
    - ChRootUsers: Hiermit setzen wir alle Benutzer, die gechrootet werden sollen.
    - ChRootGroups: Hier setzen wir alle Benutzergruppen, die gechrootet werden sollen.

  3. Wenn wir das erledigt haben,deaktivieren wir den ursprünglich installierten SSH-Dienst. Dazu setzen wir erstmal in der '/etc/rc.conf' den Wert der Zeile

    sshd_enable="YES"            auf             sshd_enable="NO"

  4. Gleichzeitig aktivieren wir den neuen SSH-Dienst:

    sshd2_enable="YES"

  5. In der '/etc/rc.conf' setzen wir jetzt auch gleich den Port. Auf welchem Port der SSH-Dienst lauschen soll musst du dir überlegen:

    sshd2_port="22"

  6. Abschliessend stoppen wir jetzt die bestehenden Prozesse um anschliessend direkt den neuen zu starten:

    # killall sshd && /usr/local/etc/rc.d/sshd.sh start

  7. Jetzt solltest du, bevor du die bestehende SSH-Verbindung trennst, ob du dich auf dem neuen Dienst verbinden kannst und die genannten Benutzer in ihrem Home-Verzeichnis eingesperrt sind.