computerseite-spezial.de

handverlesene Infos zu Linux, FreeBSD und OpenSolaris

  • Full Screen
  • Wide Screen
  • Narrow Screen
  • Increase font size
  • Default font size
  • Decrease font size
Sie sind hier: Startseite Linux-Systeme Linux allgemeine Tipps Secure Copy (SCP) per Mausklick in KDE

Secure Copy (SCP) per Mausklick in KDE

Dieser Beitrag ist erschienen in freiesMagazin (Link) 01/2010 / Lizenz: GNU Free Documentation License (GNU FDL) (Link) / Autor: Markus Schulze.

Wenn Sie diesen Artikel weiterverwenden möchten, beachten Sie bitte die Lizenzbedingungen. Vielen Dank.

 

Secure Copy (SCP) per Mausklick in KDE

von Markus Schulze


E
gal ob Wohngemeinschaft, Familie oder Single: In immer mehr Haushalten existieren zwei PCs oder gar mehr. Doch was tun, wenn man lediglich Dateien von Gerät A nach Gerät B kopieren will? Und was, wenn man das nach Möglichkeit komfortabel per Mausklick und ohne Passworteingabe machen will? Vielleicht sogar mit sicherer, also verschlüsselter Übertragung?

Heißt das Betriebssystem Linux und nutzt man als Desktopumgebung KDE, so kann man mit Hilfe dieser Anleitung ein Servicemenü für Konqueror & Dolphin erzeugen, mit dem man zukünftig einfach per Mausklick eine Datei an einen festgelegten Ort eines anderen Rechners kopiert.

Public-Key-Authentifizierung

Um nicht permanent die Anmeldedaten des Zielrechners eingeben zu müssen, muss man in einem ersten Schritt die SSH-Authentifizierung ohne Passworteingabe konfigurieren. Erst wenn dies geschehen ist, kann nach Lust und Laune mittels SCP (Secure Copy) zwischen den Rechnern kopiert werden. Damit ist die Voraussetzung geschaffen, den Kopiervorgang zu skripten. Dies ist umso mehr nötig, da das Servicemenü in KDE3 genau wie in KDE4 auf ein Programm (z. B. ein Shell-Skript) verweisen muss, welches die gewünschten Aktivitäten ausführt.

Bei einer normalen SSH-Verbindung wird zur Authentifizierung ein Passwort abgefragt. Um dies umgehen zu können, authentifiziert man sich nicht mehr per Passwort, sondern mittels eines Schlüsselpaares. Dazu wird an Rechner A ein Schlüsselpaar erzeugt und der öffentliche Schlüssel dem Rechner B übergeben. Mit entsprechenden Einstellungen in der ssh.config kann jetzt eine sichere Verbindung ohne lästige Passworteingabe aufgebaut werden.

Zunächst wechselt man in der Konsole am Rechner A in das versteckte Verzeichnis .ssh des persönlichen Ordners. Dort tippt man anschließend:

$ ssh-keygen -b 2048 -t rsa

womit das Schlüsselpaar erzeugt wird (während der Erstellung solange „Enter“ drücken bis man wieder beim Eingabeprompt landet). Im Ordner .ssh gibt es nun eine Datei id_rsa (enthält den privaten Schlüssel) und eine id_rsa.pub (enthält den öffentlichen Schlüssel). Letztere muss noch auf Rechner B kopiert werden, etwa so:

$ scp ~/.ssh/id_rsa.pub <user_b>@<rechner_b>:/home/<user_b>/.ssh/

Nun wechselt man zu Rechner B und importiert den Inhalt von id_rsa.pub in die Datei authorized_keys mittels

$ cat id_rsa.pub >> authorized_keys

und löscht anschließend die Datei id_rsa.pub wieder.

Außerdem muss man als root noch einmal überprüfen, ob die Anmeldung via Public Key in der Konfiguration überhaupt erlaubt ist (bei openSUSE ist dies beispielsweise standardmäßig nicht der Fall). Dazu dürfen folgende Zeilen in der /etc/ssh/sshd_config nicht auskommentiert sein:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Hat man all diese Punkte beachtet, sollte man sich jetzt von Rechner A auf Rechner B ohne Passworteingabe anmelden können und somit auch Dateien ohne Passwortabfrage sicher kopieren dürfen. Eine kurze Überprüfung mittels

$ ssh <user_b>@<rechner_b>

schafft Gewissheit.

Will man Dateien in beide Richtungen ohne Anmeldung kopieren, muss man die oben genannten Befehle entsprechend noch einmal umgekehrt ausführen. Weitere Hinweise zur Public-Key-Authentifizierung gibt es bei Linupedia [1].

SCP-Skripte

Jetzt benötigt man noch ein Skript, welches beim Klick auf den Servicemenüeintrag ausgeführt wird. Als Beispiel soll ein einfacher SCP-Aufruf dienen:

#! /bin/bash
scp "${1}" "${2}"

Die beiden Eingabeparameter ${1} und ${2} repräsentieren die Quelle und das Ziel und werden von Konqueror und Dolphin an das Skript übergeben.

Für umfangreichere Skripte, welche durch Gebrauch von KDialog auch aussagefähiger werden (z. B. mit Fortschrittsbalken, Anzeige von Quelle und Ziel usw.), sei an dieser Stelle auf die beiden Skripte SecureFileCopy.sh und SecureFolderCopy.sh verwiesen. Es gibt sie für KDE3 [2] und KDE4 [3].

Servicemenüeintrag in KDE3

Was jetzt noch fehlt, ist der Eintrag im Servicemenü, welcher auf das Beispielskript verweist und beim Mausklick ausgeführt wird.

Zum grundlegenden Aufbau eines Servicemenüs findet man auf der Website von KDE im Entwicklerbereich eine ausführliche Dokumentation [4]. Auch ohne diese Einführung sollte jedoch für die meisten Leser der Code der SCP.desktop verständlich sein.

[Desktop Entry]
  Encoding=UTF-8
  X-KDE-Submenu=Datei an anderen PC senden
  ServiceTypes=all/allfiles
  Actions=MoveToHomeShare1;
  ExcludeServiceTypes=kdedevice/*

[Desktop Action MoveToHomeShare1]
  Name=openSuse11.2@SamsungQ45 (~/HomeShare)
  Exec='/usr/share/apps/konqueror/servicemenus/scripts/SecureFileCopy.sh' %u ' Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. .1:/home/MyUser1/HomeShare'
  Icon=folder_html

Listing: SCP.desktop

Das Entscheidende steht hier in der vorletzten Zeile: Das Skript SecureFileCopy.sh wird ausgeführt und die gewählte Datei (%u) und der Zielort ('MyUser1@...') werden an das Skript übergeben. Das sind genau die beiden Eingabeparameter, von denen im vorletzten Absatz im Abschnitt „SCP-Skripte“ gesprochen wurde.

Abschließend verschiebt man die Datei SCP.desktop nach /usr/share/apps/konqueror/servicemenus und achtet darauf, dass alle Rechte richtig gesetzt sind (SCP.desktop: 644, Skripte: 755). Außerdem müssen alle relevanten Dateien dem User und der Gruppe root angehören.

Servicemenüeintrag in KDE4

Bei KDE4 verhalten sich die Dinge (warum auch immer) ein klein wenig anders. Zunächst muss die Zeile ServiceTypes in SCP.desktop geändert werden und eine zusätzliche Zeile mit Service eingefügt werden:

ServiceTypes=KonqPopupMenu/Plugin,all/allfiles
Type=Service

Da man bei KDE4 die SCP.desktop nach /usr/share/kde4/services/ServiceMenus kopieren muss, bedarf es auch einer Anpassung der Zeile Exec:

Exec='/usr/share/kde4/services/ServiceMenus/SecureFileCopyAcerAspire3000.sh' 

Aus irgendeinem Grund gelingt es nicht, in KDE4 einen zweiten Parameter an das Skript zu übergeben. Die zugegebenermaßen nicht sehr elegante Lösung besteht darin, auf unterschiedliche Skripte zu verweisen und den Zielrechner fest im Skript zu hinterlegen. Man braucht also pro Rechner ein Skript. SecureFileCopyAcerAspire3000.sh sieht demnach so aus:

#! /bin/bash
TO=' Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. .1:/home/MyUser2/HomeShare'
scp "${1}" $TO

Fazit

Hat man dies alles berücksichtigt, erscheint ab sofort in Konqueror und Dolphin beim Rechtsklick auf eine beliebige Datei der gewünschte Servicemenüeintrag „Datei an anderen PC senden“, in einer Ebene darunter kann nun der entsprechenden Eintrag zum Senden der Datei auf den gewünschten Rechner ausgewählt werden.

Im diesem Beispiel ist das für KDE3 der Menüeintrag „openSuse11.2@SamsungQ45 (~/HomeShare)“, der bei einem Mausklick das Skript SecureFileCopy.sh mit den richtigen Parametern aufruft und die Datei in den Ordner HomeShare des Users MyUser1 auf dem Rechner 111.222.333.1 kopiert.

In KDE4 wird hingegen nach einem Klick auf den Menüeintrag „Debian5.0@AcerAspire3000 (~/HomeShare)“ das, für diesen Rechner angepasste, Skript SecureFileCopyAcerAspire3000.sh ausgeführt und die Datei in den Ordner HomeShare des Users MyUser1 auf dem Rechner 333.222.111.1 kopiert.

[BILD 1]: Die Grafik zeigt ein KDE-Menue. Bildunterschrift: Servicemenüeintrag in KDE4.
Wenn Sie die Grafik sehen möchten, klicken Sie bitte auf den folgenden Link: (Link BILD 1).

Ausblick

Für den ambitionierten Leser noch einige Anregungen für mögliche Weiterentwicklungen:

Was passiert wenn man Dateien und Ordner zusammen markiert und kopieren will bzw. wie setzt man diese Konstellation technisch um?

Momentan ist der Zielort fix. Wie könnte man eine grafisch ansprechende Auswahl des Zielortes erreichen ohne bei der Performance Einbußen zu haben?

Die beiden als Download zur Verfügung gestellten Skripte verwenden die Progressbar rein zeitgesteuert und nicht mengengesteuert. Wie könnte man hier Verbesserungen erzeugen?

Denkbar wäre auch ein einfaches Installationsprogramm und/oder Paket, welches einige Variablen entgegen nimmt und anschließend die Skripte dynamisch erzeugt, ausführt und die Dateien entsprechend in die Ordner kopiert. Mit welchem Tool und welcher Programmiersprache erreicht man dies am besten, oder macht ggf. ein einfaches Konqueror-Plugin mehr Sinn?

Ideen oder Lösungsvorschläge nehme ich gerne unter marcos.i-networx[AT]gmx[DOT]de entgegen.

Diese Funktionen lassen sich unter GNOME mit den „Nautilus-Skripts“ realisieren („Nautilus-Scripts“, freiesMagazin 11/2009 [5]).

Links

  1. http://www.linupedia.org/opensuse/Einrichten\_von\_public\_keys\_mit\_ssh#Publickey-Authentifizierung

  2. http://marcos.i-networx.de/freiesMagazin/KDE3/

  3. http://marcos.i-networx.de/freiesMagazin/KDE4/

  4. http://developer.kde.org/documentation/tutorials/dot/servicemenus.html

  5. http://www.freiesmagazin.de/freiesMagazin-2009-11



Autoreninformation:

Markus Schulze ist seit 2006 von Linux und freier Software angetan und arbeitet mit openSuse, Debian und Kubuntu. Als großer Fan von KDE versucht er auch ohne Kenntnisse in C++ die eine oder andere sinnvolle Erweiterung am System umzusetzen.



You are here: