Schlagwort-Archive: PuTTY free SSH Client

PuTTY ist eine freie Software zum Herstellen von Verbindungen über Secure Shell, Telnet, Remote login oder serielle Schnittstellen.

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 Max wie folgt erstellt.

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

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

KiTTY Terminal Character Set Translation

PuTTY und KiTTY Character Set Translation der Terminal Zeichenkodierung

Wird im Terminal die Ausgabe von Linux Shell Commands nicht wie gewünscht dargestellt, liegt es an der Übersetzung der Zeichen Codepage des Terminals, oder es liegt ein nicht korrektes Unicode Systemgebietsschema auf dem Host vor. Der Beitrag zeigt die Einstellung der Unicode Zeichen Tabelle auf dem Linux Host, und die Character Set Translation der Zeichenkodierung beim Terminal Client PuTTY und KiTTY.

Immer mehr Linux-Systeme nutzen UTF-8 statt ISO-8859 für die Zeichenkodierung.

PuTTY unter Windows ist per Standard mit der Zeichenkodierung UFT-8 für die Character Set Translation korrekt eingestellt.

PuTTY Configuration Remote Zeichenkodierung UFT-8
Abbildung: PuTTY Character Set Translation

KiTTY der ebenso freie Clone von PuTTY, hat Standardmässig bei Character Set Translation die Zeichenkodierung ISO-8859-1:1998 (latin-1, West Europa) voreingestellt.

KiTTY Translation Zeichenkodierung UFT-8
Abbildung: KiTTY Character Set Translation

Die Zeichenkodierung sollte bei KiTTY auf UTF-8 geändert werden. Die gespeicherten Host werden im Abschnitt Session aus der Liste Saved Sessions mit Load geöffnet und angepasst.

KiTTY Zeichenkodierung sollte bei KiTTY auf UTF-8 geändert werden

Beim Linux-System wird die Zeichenkodierung mit locale abgefragt.

$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_GB.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"ddd
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Die Verfügbaren Locales ausgeben.

$ locale -a

In der Datei /etc/default/locale sind die Default Einstellungen.

$ cat /etc/default/locale
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_TIME=en_GB.UTF-8

Das Systemgebietsschema wird unter Debian 10 (Buster) mit dpkg-reconfigure locales festgelegt. UTF-8 sollte der Standard sein.

Debian dpkg-reconfigure locales
Abbildung: dpkg-reconfigure locales

Bei CentOS/RHEL Linux wird das Systemgebietsschema wie folgt festgelegt.

$ sudo localectl set-locale LANG=de_DE.UTF-8

Globale Gebietsschemaeinstellungen findet man in den Dateien.

  • /etc/default/locale – Ubuntu/Debian
  • /etc/locale.conf – CentOS/RHEL