Archiv der Kategorie: Workaround

Usability and Addons Integration unblog Technical Workarounds and Tutorials for Professionals

SSH Login mit PuTTY Key Authentifizierung

PuTTY SSH Anmeldung mit puttygen Schlüsselpaare

Die SSH Authentifizierung über asymmetrische Schlüssel ist nicht nur sicherer als die Passwortabfrage, auch ermöglicht die Public-Key-Authentifizierung eine automatisierte Anmeldung, beispielsweise bei der Script Ausführung. Bei PuTTY dient der PuTTY Key Generator puttygen.exe zum Erzeugen von RSA-(Standard) oder DSA- und ECDSA Schlüsselpaaren.

Das Tool findet man auf putty.org mit Download PuTTY, hat man den putty-installer.msi gewählt, ist puttygen bereits im Windows-Startmenü unter PuTTY zu finden. Zum Erzeugen eines RSA-Schlüsselpaares genügt ein Klick auf die Schaltfläche Generate. Möchte man DSA- oder ECDSA-Schlüssel erzeugen, kann der gewünschte Algorithmus unten im Parameter Optionsfeld gewählt werden.

PuTTY Key Schlüsselpaar erzeugen

Für die Generierung des Schlüssels wird währenddessen der nötige Zufallsmechanismus erzeugt, indem man im freien Bereich des Dialogfensters die Maus frei bewegt. Anschliessend gibt man bei Key passphrase optional das gewünschte Schlüssel Passwort ein.

PuTTY Key generate

Zum Speichern des Private-Key die Schaltfläche Save private key wählen, beim Dialog „ob man sich sicher ist den Key ohne passphrase zu schützen!„, kann man sich entscheiden mit oder ohne Passphrase zu Speichern. Den Public Key speichern ist nicht zwingend erforderlich, weil dieser sich jederzeit aus dem privaten Schlüssel errechnen lässt.

  Der Private Schlüssel sollte an einem sicheren Ort aufbewahrt werden, dies gilt vor allem dann, wenn der Private Schlüssel nicht durch eine Passphrase geschützt ist. Ist ein Privat Key einmal abhandengekommen, können unbefugte damit nichts anfangen, wenn dieser durch eine Passphrase geschützt ist. Hingegen ist bei der automatisierten Verarbeitung durch Scripts eine Passphrase nicht erwünscht.

Der Dateiname und der Pfad beim Speichern ist frei wählbar, es hat sich aber für PuTTY-Schlüssel die Endung .ppk verbreitet, da es den Hinweis auf das vom Linux abweichende Format gibt. PuTTY akzeptiert OpenSSH-Keys nicht, im Menü Conversions ist es jedoch möglich, vorhandene OpenSSH-Keys zu importieren, und auch PuTTY-Keys zu exportieren.

Public Key auf Server Speichern

Der Public Key ist öffentlich und soll auf dem Server publiziert werden, diesen mit der Maus im Feld Key vollständig markieren und mit Ctrl+C in die Zwischenablage kopieren.

PuTTY Key Generator Public key pasting into authorized_keys

Nun loggt man sich mit PuTTY noch einmal mit Benutzername und Passwort auf dem entfernten Linux Server ein, öffnet die Datei ~/.ssh/authorized_keys mit einem Editor der Wahl und fügt den Public Key aus der Zwischenablage ein.

  Es darf am Schlüssel nichts verändert werden, einfach nur copy & paste. Es können in der Datei authorized_keys mehrere Schlüssel nacheinander stehen, ohne Leerzeichen oder Zeilen dazwischen.

PuTTY mit Private Key verwenden

Um beim nächsten Login die Public-Key-Authentifizierung zu verwenden, beginnt man beim öffnen von PuTTY gleich bei Basic options for your PuTTY session im Bereich Session, und gibt die IP-Adresse oder der Host Name ein, bei Saved Sessions trägt man den gewünschten Name ein und klickt auf Save, zuvor aber noch im Bereich Category unter Connection auf + SSH klicken, bei Auth im Feld Private key file for authentication den Dateinamen des Private Keys eintragen. Das geht am einfachsten, indem man auf Browse klickt und die entsprechende Datei im Dateiauswahl Fenster auswählt.

PuTTY SSH Key Authentication

Die Anmeldedaten für jede einzelne Verbindung kann als Session gespeichert werden. Wird nun eine Verbindung zum Linux Server aufgebaut, verlangt dieser nach der Identität, so dass der angegebene Benutzername einen in der Datei authorized_keys angegebenen öffentlichen Schlüssel besitzen muss, dieser zum Privaten Schlüssel passt.

Es wird zur Eingabe der Passphrase aufgefordert (falls eingetragen), um den in der lokalen Datei .ppk gespeicherten privaten Schlüssels zu aktivieren. Sind beide Schlüssel identisch, wird der Zugang gestattet.

SSH Konfiguration auf Linux Server

Auf dem Linux Server muss die SSH Server Konfiguration für SSH Authentifizierung über asymmetrische Schlüssel aktiviert sein, bei den meisten Linux Distributionen ist standardmässig die Public-Key-Authentifizierung aktiviert in /etc/ssh/sshd_config.

#PubkeyAuthentication yes
#RSAAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

  OpenSSH: Ein führendes Hash (#) Zeichen bedeutet, das es sich um den Default Wert handelt, soll der Wert geändert werden, wird # entfernt und der Parameter entsprechend modifiziert.

Die Benutzer verwalten ihre Public Keys unter $home in ~/.ssh/authorized_keys nach dem erstellen mit adduser ist das Verzeichnis .ssh meist nicht vorhanden, es wird in diesem Fall als root für den User Fritz wie folgt erstellt.

$ cd /home/fritz
$ mkdir .ssh
$ chown fritz:fritz .ssh
$ chmod 700 .ssh
$ touch .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys

  Das Verzeichnis .ssh ist für andere Benutzer nicht einsehbar.

FortiClient VPN Post Login Script

FortiClient SSL VPN aus CLI und Scripts ausführen

Dieser Artikel beschreibt die Verwendung des FortiClient SSL VPN über die Windows Befehlszeile, und der Anwendung aus Batch-Scripts. Der zur FortiGate gehörende FortiClient ist zu jedem gängigen Betriebssystem verfügbar, und kann aus dem Fortinet Support Bereich heruntergeladen werden. Zu dem hier verwendeten FortiClient 6.4.2.1580 für Windows, kommen zusätzlich die FortiClientTools 6.0.9.0277 zum Einsatz.

FortiClient VPN
FortiClient VPN

Nachdem der FortiClient Installiert ist, lässt man die VPN Konfiguration leer. Nun werden die FortiClientTools in ein Verzeichnis entpackt, von Interesse ist der Ordner Inhalt von SSLVPNcmdline, hier die Datei FortiSSLVPNclient.exe zu finden ist, dazu die Microsoft Visual C++ Redistributable mfc140.dll, msvcp140.dll, vcruntime140.dll Laufzeitkomponenten.

Inhalt von SSLVPNcmdline FortiClientTools_6.0.9.0277.zip.

Ausführen von FortiSSLVPNclient.exe öffnet das GUI.

FirtiClientTools
FortiClient SSLVPN

Wir entscheiden uns das unter Settings gespeicherte VPN Verbindungsprofil nicht zu nutzen, stattdessen wird die Verbindung aus dem CLI mit Parameter Übergabe ausgeführt.

FortiSSLVPNclient connect -h 226.62.42.81:10443 -u homer:password123 -i -q -m

Es bietet sich nun an, die VPN Verbindung mit Anmeldung und Netzlaufwerk mapping aus dem Script zu starten, die folgende Batchdatei soll dies ermöglichen.

@echo off
START "" /I FortiSSLVPNclient connect -h 226.62.42.81:10443 -u homer:password123 -i -q -m
timeout 10
net use * /delete /yes
net use R: \\10.10.10.10\data /user:homer password123 /persistent:no
REM weitere Anweisungen!

Mit connect -h wird zum VPN Gateway verbunden, mit der IP Adresse und durch Doppelpunkt getrennt die Portnummer. Der Benutzer -u der sich beim Gateway anmelden soll und dem Passwort nach dem Doppelpunkt. Mit timeout wird 10 Sekunden gewartet, damit die VPN Verbindung steht, bevor das Netzlaufwerk gemappt wird, mglicherweise kann der Wert verkleinert werden, oder er muss erhöht werden.

In der Taskleiste das Symbol, über diesem mit Rechtsklick sich das Kontextmenü öffnet.

Die VPN Verbindung wird getrennt mit folgendem Script.

@echo off
START "" /I FortiSSLVPNclient disconnect

FortiSSLVPNclient Command Line Usage
Usage: FortiSSLVPNclient.exe [options] [args]

FortiSSLVPNclient.exe command line parameters

Quellenlink: Fortinet Knowledge Base