SFTP SCP

Aus Synology Wiki
Wechseln zu: Navigation, Suche

Ab Firmware DSM 3.1 hat man auch die Möglichkeit, den internen SFTP-Server über die Änderung einer Konfigurationsdatei zu aktivieren: Nicht unterstützte Konfigurationsänderungen

Einleitung

Wer sich über die Fehlermeldungen und der fehlenden Möglichkeit zum Bearbeiten von Dateien per SFTP oder SCP mit WinSCP ärgert, der sollte diese Anleitung lesen.

In der DSM 4.1 sollte mit WinSCP der Zugriff per SCP (im Gegensatz zu SFTP) allerdings ohne Eingriffe schon funktionieren.

Grundsätzliches

SFTP ist FTP durch einen SSH Tunnel. Deswegen muss auch der SSH Zugriff aktiviert sein und das Login in der passwd erlaubt sein (Standard nur für root und admin, die passwd wird bei jeder Änderung bei den Benutzerrechten von der Weboberfläche überschrieben)

Hohes Sicherheitsrisiko
Da sich jeder freigeschaltete Benutzer auch über SSH einloggen kann, hat er Zugriff auf alle Betriebssystem Verzeichnisse und viele Dateien. Die Zugriffsrechte werden direkt in Linux gesetzt und nicht über die Weboberfläche.

Voraussetzungen

Allgemein

  • Bootstrap zur Installation mit IPKG wird vorausgesetzt, siehe IPKG
  • Zugriff auf Disk Station per Telnet oder SSH

für SFTP und SCP

  • openssl 0.9.7m oder openssl 0.9.8g (nicht getestet mit openssl 0.9.7e oder älter)
  • zlib
  • die ausführbaren Dateien sftp und scp

Openssl 0.9.8g sollte bei jedem, der die zur Zeit aktuelle DSM > 2.0-637 benutzt, schon vorhanden sein.

Installation

Welche openssl Version

Einloggen auf der Disk Station per Telnet oder SSH

Zum Überprüfen, ob und wo openssl installiert ist, einfach mal mit

which openssl
überprüfen. Bekommt ihr einen Pfad genannt, dann ist openssl schon vorhanden.

Nun die aktive Version mit

openssl version
anzeigen lassen.

openssl 0.9.8g (oder höher) = von Synology ab DSM 2.0-0722 mitgelieferte Version

openssl 0.9.7m = per IPKG installierte Version

openssl 0.9.7e = von Synology bis DSM 2.0-0637 mitgelieferte Version

Bei wem durch Abhängigkeiten eines anderen Paketes openssl 0.9.7m mitinstalliert wurde und die DSM 2.0-0722 benutzt, könnte die alte Version mit

ipkg remove openssl
entfernen. Keine Angst, das in der DSM 2.0-0722 mitgelieferte openssl 0.9.8g wird dabei nicht entfernt.

Es könnte aber sein, dass andere Pakete noch Abhängigkeiten zum openssl 0.9.7 haben. Auf diese Situation kann ich hier nicht weiter eingehen, dies muss an anderer Stelle gelöst werden.

Fangen wir nun an; aktualisieren der Paketinfos mit:

ipkg update
Nun wird das Paket zlib_1.2.3-3 mit
ipkg install zlib
installiert.

SFTP und SCP nachinstallieren

Da wir unser vorhandenes SSH nicht mit einem weiterem SSH-Paket (damit ist nicht der SSH-Aktivierungspatch gemeint) durcheinander bringen wollen (wäre auch überflüssig), werden wir uns die benötigten beiden Dateien sftp und scp manuell beschaffen. Dazu holen wir uns mit wget das Paket openssh_5.5p1-1. Je nach Prozessortyp ist der optware-Pfad unterschiedlich (Tabelle der Prozessoren - Spalte Optware-Pfad).

Hier sind exemplarisch mal zwei Pfade aufgeführt:

cd ~
wget http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/openssh_5.5p1-1_arm.ipk
oder aber
cd ~
wget http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/openssh_5.5p1-1_powerpc.ipk

oder so

cd /tmp
ipkg download openssh

Von diesem benötigen wir nur das Archiv data.tar.gz, also wieder mit

tar -xvzf openssh_5.5p1-1_arm.ipk ./data.tar.gz
oder für den ppc_85xx mit
tar -xvzf openssh_5.5p1-1_powerpc.ipk ./data.tar.gz
entpacken. Aus dem Archiv data.tar.gz brauchen wir nur die beiden Dateien sftp und scp.

Wir entpacken diese nun mit:

tar -xvzf data.tar.gz ./opt/bin/sftp ./opt/bin/scp
Bei neueren Versionen von openssh hat sich der Dateiname von scp geändert. Sollte also eine Fehlermeldung beim Entpacken autreten ist folgendes zu nutzen:
tar -xvzf data.tar.gz ./opt/bin/sftp ./opt/bin/openssh-scp

Zum Schluss verschieben wir noch die beiden Dateien aus dem temporären opt/bin in das korrekte /opt/bin im System.

mv ./opt/bin/* /opt/bin

Sollte die Datei versionsbedingt openssh-scp heißen musst Du Diese wie folgt umbenennen:

mv /opt/bin/openssh-scp /opt/bin/scp

Die Reste vom Entpacken können nun entfernt werden.

Bei vorhandenem openssl 0.9.8g (oder höher) von Synology

Hier benötigen wir noch einen neuen SymLink, da SFTP und SCP für die Version 0.97 kompiliert wurden und direkt auf libcrypto.so.0.9.7 verweisen.

cd /usr/lib
ln -s libcrypto.so.0.9.8 libcrypto.so.0.9.7

Bei vorhandenem openssl 1.0.0 (oder höher) von Synology

Hier hat sich der SymLink ein wenig verändert. Dazu muss der Verweis wie folgt lauten:

cd /usr/lib
ln -s libcrypto.so.1.0.0 libcrypto.so.0.9.8

Befehl 'groups' nachinstallieren

Wem die Fehlermeldung am Anfang stört, der kann sich das Paket coreutils_6.12-2 mit

ipkg install coreutils
installieren. In diesem Paket sind noch weitere gute Tools drin, die der Eine oder Andere vielleicht gebrauchen kann.

Alternativer 'groups' Befehl

Wer das Paket coreutils_6.12-2 aus irgendeinem Grund nicht installieren möchte, der kann die folgende Alternative benutzen.

Eine Datei groups (ohne Endung) in /opt/bin/ erstellen

vi /opt/bin/groups

und mit folgendem Inhalt füllen:

#!/bin/sh
echo "<gruppenname_des_Users>"

Für <gruppenname_des_Users> bitte die entsprechende Gruppe des gewünschten Users für WinSCP eintragen. Für root wäre das root, alle anderen User users.

Anschließend mit

chmod 0755 /opt/bin/groups
ausführbar machen.

Symlinks to /bin anlegen

Bei einigen Versionen ist es notwendig Symlinks von /bin/scp auf /opt/bin/scp, von /bin/sftp auf /opt/bin/sftp und von /bin/groups auf /opt/bin/groups anzulegen. Beim Zugriff von Aussen werden diese Befehle unter /bin gesucht und werfen eventuell eine Fehlermeldung 127.

 cd /bin
 ln -s /opt/bin/scp
 ln -s /opt/bin/sftp
 ln -s /opt/bin/groups

Test

Winscp starten, einloggen...es sollte keine Fehlermeldung bezüglich des fehlendem groups Kommandos mehr erscheinen. Nun noch schnell eine Datei zum Bearbeiten öffnen...die Datei sollte ohne Fehlermeldungen im Editor angezeigt werden.

Eventuell auftretende Probleme

Falls es immer noch zu der Fehlermeldung kommen sollte, muss man folgendes noch nachinstallieren:

ipkg install openssh

Weblinks