print
2008-05-13
Source: Autor: Bernd Weber

FTP-Zugang auf TLS/SSL umgestellt - Was tun?

Manch einer, der bisher über ftp auf seinen Webspace zugegriffen hat, kommt plötzlich nicht mehr auf seinen Account. Das liegt unter Umständen nicht daran, dass der Benutzername nicht stimmen würde, sondern dass sein bisher benutztes FTP-Programm, sein Client, nicht mehr mit dem Server kommunizieren kann. Der ist möglicherweise auf TLS/SSL umgestellt worden und unser Client kann nichts damit anfangen. Ein Indiz, dass sich auf dem Server etwas geändert hat, ist, dass z.B. nach Aufruf mit Benutzername kein Passwort abgefragt wird, sondern die Verbindung sofort beendet wird.

Für alle Betriebssysteme gibt es Lösungen. Wer bisher mit einem Projektverwaltungssystem für Webseiten gearbeitet hat, aus dem Änderungen direkt auf den Webserver übertragen werden konnten hat eventuell ein Problem, dieses weiterhin bequem nutzen zu können.

Plattformübergreifend gibt es FileZilla , das auf der Technik von Firefox basiert. Außerdem gibt es noch ein Firefox-Add-On namens FireFTP .

Worum handelt es sich also? Wer bisher FTP gewohnt war, bedient sich jetzt FTPS—eines anderen Protokolls.

Ich will an dieser Stelle eine Lösung für LINUX mit KDE vorstellen

Problemstellung

Die wohl fortschrittlichste und komfortabelste Desktoplösung für LINUX ist KDE. Der Webbrowser Konqueror beherrscht eine Vielzahl von Protokollen und stellt nach Einloggen auf einen Server über FTP den Inhalt des Serverspace dar, als handele es sich um ein normales Verzeichnis, verhält sich also mit FTP wie ein Dateimanager.

Wer unter LINUX Webseiten entwickelt kennt vielleicht Quanta. Mit Quanta kann man ein ganzes Webprojekt verwalten und Dateien direkt aus dem Programm auf dem Server laden.

Unter KDE können eine Vielzahl von Zugriffsprotokollen vom Benutzer gehandhabt werde, als würde es sich um den gewohnten Zugriff auf Verzeichnisse und Dateien handeln. Diese Flexibilität wird ermöglicht durch KDE-Plugins, so genannte kio-slaves. Kio steht für KDE-Input/Output. Wer LINUX mit KDE verwendet, hat dieses vermutlich über eine der gängigen Distributionen OpenSuSe, Ubuntu oder Kubuntu oder einfach Debian installiert. Jede dieser Distributionen hat ein ihm eigenes Paketverw altungssystem, also ein eigens Verwaltungskosten für Software, das Softwarepakete in einem speziellen Format auf Installationsservern im Netz vorhält. Diese können dann aus dem Internet beliebig nachinstalliert werden. Bei OpenSuse wird man das über Yast machen, bei Kubuntu oder Ubuntu mit Synaptic oder auf der Konsole, mit apt-get.

In keiner dieser Distributionen ist jedoch ein kio-slave für FTPS enthalten. Es finden sich auch nirgendwo fertige Pakete dafür im .RPM oder .deb Format. Jedoch gibt es tatsächlich einen fertig programmierten Slave, der allerdings auf dem eigenen Server kompiliert, das heißt in Maschinencode übersetzt werden muss. Da s ist gar nicht so kompliziert wie sich das anhört. Es ist jedoch darauf zu achten, ob wir auf unserem Rechner mit KDE 3.x oder schon mit KDE 4.x arbeiten. Kde 4.0 ist die neueste stabile Version des KDE-Desktop.

Lösung

1. Download der richtigen Version Für KDE 4.x benötigen wir kio-ftps-0.2.tar.gz: http://kasablanca.berlios.de/kio-ftps/ für KDE 3.x kio-ftps-0.1.tar.gz.:http://www.sourcefiles.org/Networking/FTP/ 2. Installation Ausführlich werde ich die Installation für kio-ftps-0.1 und KDE 3.5 beschreiben.

Was benötigen wir noch? Entwicklungspakete, die auf jeden Fall in der Distribution enthalten sind und einfach nachinstalliert werd en können. Sie heißen meistens irgendwas mit devel.

- libjpeg - qt3base-devel (oder so ähnlich) - kde3base-devel - xorg-devel

Außerdem, natürlich den Compiler: gcc, g++

Das Entpacken kann mit dem Konqueror (es gibt auch einen Slave der mit gezippten Dateien umgehen kann) ges chehen. Da wir sowieso für die Installation die Konsole benötigen (Terminalfenster), machen wir es damit.

1. Wir wechseln in das Verzeichnis, in der wir die die Datei abgelegt haben, z.B. einfach in unserem Homeverzeichnis: > cd > tar xzvf kio-ftps-0.1.tar.gz

2. Wechseln in das kio-ftps-Verzeichnis > cd kio-ftps-0.1

3. Ausführen des Configure-Skripts

./configure

Ein typischer Lauf des Skripts sieht so aus. Auf jeden Fall sollte am Ende stehen: “Good – your configure finished. Start make now”. Wenn das nicht der Fall sein sollte, fehlt noch was. Was das sein könnte, kann man dem Protokoll (s.u.) entnehmen. Die ganz schnellen können einfach mal einen Laufversuch entnehmen, scheitert der, fehlt wahrscheinlich etwas aus der Liste, oben.

checking build system type… i686-pc-linux-gnu checking host system type… i686-pc-linux-gnu checking target system type… i686-pc-linux-gnu checking for a BSD-compatible install… /usr/bin/install -c checking for -p flag to install… yes checking whether build environment is sane… yes checking for gawk… gawk checking whether make sets $(MAKE)... yes checking for kde-config… /opt/kde3/bin/kde-config checking where to install… /opt/kde3 (as returned by kde-config) checking for style of include used by make… GNU checking for gcc… gcc checking for C compiler default output file name… a.out checking whether the C compiler works… yes checking whether we are cross compiling… no checking for suffix of executables… checking for suffix of object files… o checking whether we are using the GNU C compiler… yes checking whether gcc accepts -g… yes checking for gcc option to accept ANSI C… none needed checking dependency style of gcc… gcc3 checking how to run the C preprocessor… gcc -E checking for g+... g+ checking whether we are using the GNU C++ compiler… yes checking whether g++ accepts -g… yes checking dependency style of g++... gcc3 checking whether gcc is blacklisted… no checking whether g++ supports -Wmissing-format-attribute… yes checking whether gcc supports -Wmissing-format-attribute… yes checking whether g++ supports -Wundef… yes checking whether g++ supports -Wno-long-long… yes checking whether g++ supports -Wnon-virtual-dtor… yes checking whether g++ supports -fno-exceptions… yes checking whether g++ supports -fno-check-new… yes checking whether g++ supports -fno-common… yes checking whether g++ supports -fexceptions… yes checking how to run the C++ preprocessor… g++ -E checking whether g++ supports -O0… yes checking whether g++ supports Wl,-no-undefined… yes checking whether g++ supports Wl,-allow-shlib-undefined… yes not using lib directory suffix checking for a sed that does not truncate output… /usr/bin/sed checking for egrep… grep -E checking for ld used by gcc… /usr/i586-suse-linux/bin/ld checking if the linker (/usr/i586-suse-linux/bin/ld) is GNU ld… yes checking for /usr/i586-suse-linux/bin/ld option to reload object files… -r checking for BSD-compatible nm… /usr/bin/nm -B checking whether ln -s works… yes checking how to recognise dependent libraries… pass_all checking for ANSI C header files… yes checking for sys/types.h… yes checking for sys/stat.h… yes checking for stdlib.h… yes checking for string.h… yes checking for memory.h… yes checking for strings.h… yes checking for inttypes.h… yes checking for stdint.h… yes checking for unistd.h… yes checking dlfcn.h usability… yes checking dlfcn.h presence… yes checking for dlfcn.h… yes checking for g77… no checking for f77… no checking for xlf… no checking for frt… no checking for pgf77… no checking for fort77… no checking for fl32… no checking for af77… no checking for f90… no checking for xlf90… no checking for pgf90… no checking for epcf90… no checking for f95… no checking for fort… no checking for xlf95… no checking for ifc… no checking for efc… no checking for pgf95… no checking for lf95… no checking for gfortran… no checking whether we are using the GNU Fortran 77 compiler… no checking whether accepts -g… no checking the maximum length of command line arguments… 32768 checking command to parse /usr/bin/nm -B output from gcc object… ok checking for objdir… .libs checking for ar… ar checking for ranlib… ranlib checking for strip… strip checking if gcc static flag works… yes checking if gcc supports -fno-rtti -fno-exceptions… no checking for gcc option to produce PIC… -fPIC checking if gcc PIC flag -fPIC works… yes checking if gcc supports -c -o file.o… yes checking whether the gcc linker (/usr/i586-suse-linux/bin/ld) supports shared libraries… yes checking whether -lc should be explicitly linked in… no checking dynamic linker characteristics… GNU/Linux ld.so checking how to hardcode library paths into programs… immediate checking whether stripping libraries is possible… yes checking for shl_load… no checking for shl_load in -ldld… no checking for dlopen… no checking for dlopen in -ldl… yes checking whether a program can dlopen itself… yes checking whether a statically linked program can dlopen itself… yes checking if libtool supports shared libraries… yes checking whether to build shared libraries… yes checking whether to build static libraries… no configure: creating libtool appending configuration tag “CXX” to libtool checking for ld used by g++... /usr/i586-suse-linux/bin/ld checking if the linker (/usr/i586-suse-linux/bin/ld) is GNU ld… yes checking whether the g++ linker (/usr/i586-suse-linux/bin/ld) supports shared libraries… yes checking for g++ option to produce PIC… -fPIC checking if g++ PIC flag -fPIC works… yes checking if g++ supports -c -o file.o… yes checking whether the g++ linker (/usr/i586-suse-linux/bin/ld) supports shared libraries… yes checking dynamic linker characteristics… GNU/Linux ld.so checking how to hardcode library paths into programs… immediate checking whether stripping libraries is possible… yes checking for shl_load… (cached) no checking for shl_load in -ldld… (cached) no checking for dlopen… (cached) no checking for dlopen in -ldl… (cached) yes checking whether a program can dlopen itself… (cached) yes checking whether a statically linked program can dlopen itself… (cached) yes appending configuration tag “F77” to libtool checking for msgfmt… /usr/bin/msgfmt checking for gmsgfmt… /usr/bin/msgfmt checking for xgettext… /usr/bin/xgettext checking if C++ programs can be compiled… yes checking for strlcat… no checking if strlcat needs custom prototype… yes – in libkdefakes checking for strlcpy… no checking if strlcpy needs custom prototype… yes – in libkdefakes checking for main in -lutil… yes checking for main in -lcompat… no checking for crypt in -lcrypt… yes checking for socklen_t… yes checking for dnet_ntoa in -ldnet… no checking for dnet_ntoa in -ldnet_stub… no checking for inet_ntoa… yes checking for connect… yes checking for remove… yes checking for shmat… yes checking for sys/types.h… (cached) yes checking for stdint.h… (cached) yes checking sys/bitypes.h usability… yes checking sys/bitypes.h presence… yes checking for sys/bitypes.h… yes checking for poll in -lpoll… no checking Carbon/Carbon.h usability… no checking Carbon/Carbon.h presence… no checking for Carbon/Carbon.h… no checking CoreAudio/CoreAudio.h usability… no checking CoreAudio/CoreAudio.h presence… no checking for CoreAudio/CoreAudio.h… no checking if res_init needs -lresolv… yes checking for res_init… yes checking if res_init needs custom prototype… no checking for killpg in -lucb… no checking for int… yes checking size of int… 4 checking for short… yes checking size of short… 2 checking for long… yes checking size of long… 4 checking for char *... yes checking size of char *... 4 checking for dlopen in -ldl… (cached) yes checking for shl_unload in -ldld… no checking for size_t… yes checking size of size_t… 4 checking for unsigned long… yes checking size of unsigned long… 4 checking sizeof size_t == sizeof unsigned long… yes checking for PIE support… yes checking if enabling -pie/fpie support… yes checking crt_externs.h usability… no checking crt_externs.h presence… no checking for crt_externs.h… no checking for _NSGetEnviron… no checking for vsnprintf… yes checking for snprintf… yes checking for X… libraries /usr/lib, headers . checking for IceConnectionNumber in -lICE… yes checking for libXext… yes checking for pthread_create in -lpthread… yes checking for extra includes… no checking for extra libs… no checking for libz… -lz checking for libpng… -lpng -lz -lm checking for libjpeg6b… no checking for libjpeg… -ljpeg checking for perl… /usr/bin/perl checking for Qt… libraries /usr/lib/qt3/lib, headers /usr/lib/qt3/include using -mt checking for moc… /usr/lib/qt3/bin/moc checking for uic… /usr/lib/qt3/bin/uic checking whether uic supports -L … yes checking whether uic supports -nounload … yes checking if Qt needs -ljpeg… no checking for rpath… yes checking for KDE… libraries /opt/kde3/lib, headers /opt/kde3/include checking if UIC has KDE plugins available… yes checking for KDE paths… defaults checking for dcopidl… /opt/kde3/bin/dcopidl checking for dcopidl2cpp… /opt/kde3/bin/dcopidl2cpp checking for mcopidl… /opt/kde3/bin/mcopidl checking for artsc-config… /opt/kde3/bin/artsc-config checking for meinproc… /opt/kde3/bin/meinproc checking for kconfig_compiler… /opt/kde3/bin/kconfig_compiler checking for dcopidlng… /opt/kde3/bin/dcopidlng checking for makekdewidgets… /opt/kde3/bin/makekdewidgets checking for xmllint… /usr/bin/xmllint checking for setfsent… yes checking if kio_ftps should be compiled… yes configure: creating ./config.status fast creating Makefile fast creating kio_ftps/Makefile config.pl: fast created 2 file(s). config.status: creating config.h config.status: executing depfiles commands

Good – your configure finished. Start make now

4. Ausführen von make

Ab hier sollte dann alles glatt gehen:

make

5. Installieren

Einloggen als Root

su

Eingabe des ROOT-Passworts

make install

5: Testen

Mache ein Konqueror-Fenster auf und gib ein: ftps://user@ftp.so36.net

Statt einfach user zu setzen ist hier natürlich der eigene Benutzername zu wählen.

(alex)