SFTP SCP
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.
Grundsätzliches
SFTP also 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 Betriebsystem 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
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.