KeePassRDP Plugin

Irgendwann gegen Ende 2018 / Anfang 2019 habe ich angefangen ein Plugin für KeePass 2 zu schreiben. Hier gibt’s ein wenig Hintergrundstory dazu.

Privat benutze ich KeePass mindestens täglich. Beruflich noch häufiger. Da ich für einen IT-Dienstleister arbeite, muss ich oft administrative Tätigkeiten auf Kundensystemen durchführen. Die Zugangsdaten dieser Systeme werden in KeePass 2 Datenbanken verwaltet und gespeichert.

Da der Zugriff auf diese Systeme häufig remote per RDP erfolgt und ich das ständige Copy-Paste-Spielchen irgendwie leid war, dachte ich mir, ich schaue mir einfach mal an wie Plugin-Entwicklung für KeePass 2 funktioniert und ob ich damit einen Weg finde, Zugangsdaten direkt an den RDP-Client zu übergeben.

Es gibt eine sehr sehr gute offizielle Anleitung mit Step-by-Step Tutorial und Beispielen um in die Plugin-Entwicklung für KeePass zu starten. Also habe ich mich einfach mal ein paar Abende hingesetzt und ein wenig mit den mir bekannten Möglichkeiten rumgebastelt.

Schnelle erste Erfolge

Nach kurzer Zeit hatte ich es bereits geschafft aus der geöffneten KeePass Datenbank die Zugangsdaten eines ausgewählten Eintrags abzurufen und mittels cmdkey.exe im Windows Credential Manager („Anmeldeinformationsverwaltung“) zu speichern. Danach können die gespeicherten Credentials vom RDP-Client (mstsc.exe) für eine Verbindung verwendet werden.

Mehr Komfort und Sicherheit

Somit war die gewünschte Grundfunktionalität bereits gegeben. Aber ich wollte noch mehr Komfort für den alltäglichen Gebrauch. Und auch an der Sicherheit konnte sicherlich noch etwas gefeilt werden.

Oft hat ein Kunde mehrere Server und Systeme die per RDP erreichbar sind, aber zum Beispiel gegen die selbe Domäne authentifizieren. Ich wollte daher eine Möglichkeit schaffen, Zugangsdaten jeweils nur einmal anzulegen statt diese bei jedem Server/RDP-Eintrag einzeln zu hinterlegen. Außerdem möchte man sich ja vielleicht doch mal mit einem lokalen Konto an einem Server anmelden.

Es sollte also eine Art N-zu-M Beziehung zwischen den Zugangsdaten („Credential-Entries“) und Servern („RDP-Entries“) geben.

Als Lösung dafür ist der „Credential-Picker“ (oder kurz „credpick[er]“) entstanden:
Liegen RDP-Entries in einem Unterordner „RDP“ wird automatisch der übergeordnete Ordner via RegEx durchsucht und passende Credential-Entries werden gesammelt und in einer Liste angezeigt. Dann muss man nur noch den gewünschten Credential-Entry auswählen und schon werden die Zugangsdaten für eine konfigurierbare Zeit im Windows Credential Manager abgelegt und die RDP-Verbindung mittels mstsc.exe aufgerufen.

OpenSource auf GitHub

Als ich das Plugin für präsentierbar hielt und selbst regelmäßig verwendet hatte, habe ich das ganze erstmal an meine Kollegen verteilt und diese quasi als „Beta-Tester“ genutzt. Nach ein paar Wochen relativ Problemloser Nutzung wollte ich das ganze auch für die gesamte KeePass-Community zur Verfügung stellen. Daher habe ich den Code unter der GPL-3 Lizenz auf GitHub veröffentlicht.

Das Ganze ist quasi mein erstes richtiges, „größeres“ Open-Source-Projekt und ich finde es immer noch großartig. (Also OpenSource-Projekte. Das Plugin ist (noch) nicht unbedingt eine technische Meisterleistung.)

Ein paar Tage später habe ich im offiziellen KeePass Forum auf SourceForge einfach mal gepostet, dass ich ein Plugin gebaut habe und mal fragen wollte, ob und wie es möglich ist, dass es in die offizielle Plugin-Liste aufgenommen wird. Kurz darauf bekam ich direkt eine Antwort vom KeePass Entwickler, dass er das Plugin mit in die Liste aufgenommen hat. 🎉

Ab da stiegen die Downloadzahlen immer weiter an und schon bald gab es erste gemeldete Fehler und Feature-Requests. Seitdem arbeite ich immer mal wieder, wenn ich die Zeit dazu finde, am Plugin weiter.

Die neuste Version gibt es immer hier: https://github.com/iSnackyCracky/KeePassRDP/releases/latest

Natürlich kannst du gern jederzeit Fehlerbehebungen oder Features beitragen. Erstelle dazu einfach einen Pull-Request.

2 Gedanken zu “KeePassRDP Plugin”

  1. Best,

    Thank you for the KeepassRDP Plugin i use it o lot!!!

    One question i had: is it possible to start an RDP session within another RDP session?
    Now i can access the first RDP session with KeepassRDP and manually copy paste for the second RDP session. So i was wandering if it was possible to start the second session in the same way as the first.

    thank you
    Michiel Kuik

    1. Hi Michiel,

      first of all, thank you very much for your feedback!

      Unfortunately it’s not possible to invoke a new RDP session inside an existing session from „outside“ this first one. As the KeePassRDP plugin needs to launch the mstsc.exe (and access the windows credential store if you want to use KeePass credentials) which can’t be done from „outside“ the RDP session.
      There might be a way to do this by sending key-events to the RDP session (just like the KeePass autotype feature) but this would most likely be very error-prone as a short connection loss or some kind of latency could mess with the process.
      But what should work perfectly fine is running KeePass and the KeePassRDP plugin inside the RDP session and start another one from this KeePass instance. But that would of course require access to the KeePass database file from both systems (your local one and the first RDP session host).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

This site uses Akismet to reduce spam. Learn how your comment data is processed.