Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/toafez/howto_windows.ssh.putty.puttygen


https://github.com/toafez/howto_windows.ssh.putty.puttygen

Last synced: about 2 months ago
JSON representation

Awesome Lists containing this project

README

        

[![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Ftoafez%2FHowTo_Windows.SSH.PuTTY.PuTTYgen&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false)](https://hits.seeyoufarm.com)

# HowTo: SSH-Key mit PuTTY und PuTTYgen
Secure Shell, abgekürzt SSH, ist ein Netzwerkprotokoll zum Aufbau verschlüsselter Verbindungen zwischen Geräten im lokalen Netzwerk oder über das Internet. Die Anmeldung erfolgt in der Regel über die Eingabe eines Benutzernamens und des zugehörigen Passworts. Neben dem Verbindungsaufbau direkt über das Terminal werden auch grafische Benutzeroberflächen wie PuTTY verwendet.
Durch die Verwendung einer RSA-Schlüssel-Authentifizierung entfällt beim SSH-Verbindungsaufbau zu einem entfernten Server die Eingabe von Benutzername und Passwort. Dies ermöglicht einen automatisierten Verbindungsaufbau ohne die Anwesenheit eines Benutzers. Die Authentifizierung erfolgt hierbei über einen zuvor generierten privaten Schlüssel ohne Passwort und einen daraus resultierenden öffentlichen Schlüssel.

## PuTTY und PuTTYgen installieren
Um unter Windows einen RSA-Key zu erzeugen und sich anschließend über SSH mit einem Remote-Server verbinden zu können, benötigst du den PuTTY-Client und das darin enthaltene Programm PuTTYgen. Beide Programme können als Windows-Installer von der [PuTTY Download-Seite](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) heruntergeladen werden.

## Öffentlichen und privaten Schlüssel mit PuTTYgen erzeugen
1. Starte **PuTTYgen** aus der Liste der Windows-Programme.
2. Wähle im Abschnitt **Parameters / Typ of key to generated** die Option **RSA** aus.
3. Im Abschnitt **Parameters / Number of bits in a generated key** wird die Anzahl der Bits auf mindestens **2048**, besser auf **4096** eingestellt.
4. Klicke anschließend im Abschnitt **Actions / Generate a public/private key pair** auf die Schaltfläche **Generate**.

![01_PuTTY_Key_Generator](/images/01_PuTTY_Key_Generator.png)

5. Du wirst nun aufgefordert, den Mauszeiger als Zufallsgenerator über das Fenster des PuTTY Schlüsselgenerators zu bewegen, um den öffentlichen und den privaten Schlüssel zu erzeugen.

![02_PuTTY_Key_Generator](/images/02_PuTTY_Key_Generator.png)

6. Sobald der Prozess abgeschlossen ist und die Schlüsselinformationen angezeigt werden, kann im Abschnitt **Key / Key comment:** ein eindeutiger Name für den soeben erstellten Schlüssel angegeben werden. In diesem Beispiel nennen wir den Schlüssel **puttygen-rsa-key**.
7. Die Verwendung einer Passphrase im Abschnitt **Key / Key passphrase:** wird einerseits dringend empfohlen, kann aber auch kontraproduktiv sein, wenn man später unbeaufsichtigte und damit automatisierte SSH-Verbindungen aufbauen möchte, um z.B. regelmäßige Backups durchzuführen. In diesem Fall ist von der Eingabe einer Passphrase dringend abzuraten. Es ist also jedem selbst überlassen, ob er eine Passphrase verwenden möchte oder nicht.
8. Markiere anschließend den öffentlichen Schlüssel im Abschnitt **Key / Public key for pasting into OpenSSH authorized_keys file**. Klicke mit der rechten Maustaste auf den markierten Text, kopiere den öffentlichen Schlüssel in die Zwischenablage, öffne einen Texteditor deiner Wahl, füge den öffentlichen Schlüssel in die Datei ein und speichere die Textdatei unter einem Namen deiner Wahl an einem sicheren Ort.
9. Speichere anschließend den privaten Schlüssel an demselben sicheren Ort, indem du im Bereich **Actions / Save the generated key** auf die Schaltfläche **Safe private key** klickst. Auch hier ist der Dateiname frei wählbar, erhält aber die Endung **.ppk**. In diesem Beispiel lautet der Dateiname puttygen-rsa-key.ppk.

![03_PuTTY_Key_Generator](/images/03_PuTTY_Key_Generator.png)

## Verbindung zum Remote Server mit PuTTY herstellen
1. Starte **PuTTY** aus der Liste der Windows-Programme.
2. Trage im Abschnitt **Specify the destination you want to connect to / Host Name (or IP address)** und **Port** die IP-Adresse des Remote-Servers ein, mit dem du dich verbinden möchtest und passe ggf. den zu verwendenden Port an. Dieses Beispiel verwendet die IP-Adresse 172.16.1.12 und den Port 22.
3. Wähle im Abschnitt **Specify the destination you want to connect to / Connection type** die Option **SSH** aus.
4. Klicke anschließend auf die Schaltfläche **Open**, um eine Verbindung zu deinem Remote-Server aufzubauen.

![10_PuTTY_Configuration](/images/10_PuTTY_Configuration.png)

5. Beim ersten Verbindungsaufbau erhält man einen **„Security Alert“** und wird aufgefordert, die Verbindung zu akzeptieren, um einen ersten Handshake durchzuführen, bei dem ein sogenannter Fingerprint für den zukünftigen Abgleich hinterlegt wird. Klicke daher auf die Schaltfläche **Accept**.

![11_PuTTY_Configuration](/images/11_PuTTY_Configuration.png)

6. Nun sollte sich ein Terminalfenster öffnen, in das du deinen Benutzernamen und dein Passwort eingeben musst, um dich an der Konsole deines Remote-Servers anzumelden. In diesem Beispiel wird der Benutzername **tommes** verwendet, um sich an einem fiktiven **Ubuntu-Server** anzumelden.

```
login as: tommes
[email protected]'s password:
```

7. Nach erfolgreicher Anmeldung sollte nach einer kurzen Begrüßung und ggf. weiteren Informationen die Eingabeaufforderung bzw. der Prompt erscheinen.

```
tommes@Ubuntu-Server:~$
```

9. Normalerweise solltest du dich nun in deinem eigenen Benutzer-Home-Verzeichnis befinden. Du kannst dies überprüfen, indem du den Befehl **pwd** (steht für "print working directory") eingibst und die Eingabetaste drückst.

```
tommes@Ubuntu-Server:~$ pwd
/home/tommes
```

Diesem Beispiel folgend befinden wir uns also im Home-Verzeichnis des Benutzers tommes (korrekterweise müsste hier natürlich dein Benutzername stehen) und genau dort wollen wir auch sein. Je nachdem, zu welchem Remote-Server-System eine Verbindung aufgebaut wird, kann hier ein abweichender Pfad ausgegeben werden. Bei Verwendung eines Synology NAS wäre der Pfad zum Home-Verzeichnis des Benutzers beispielsweise /var/services/homes/tommes.

**Anmerkung:** Wenn das verwendete System eine direkte Authentifizierung mit Schlüssel zum Superuser **root** zulässt, kann an dieser Stelle zum root-Konto gewechselt werden, um den öffentlichen Schlüssel zu kopieren. Dies geschieht durch Eingabe des Befehls `su -` bzw. `sudo -i` und Eingabe eines Passworts.

## Kopieren des öffentlichen Schlüssels auf den Remote-Server
Zur besseren Lesbarkeit werden alle folgenden Eingaben ohne die Verwendung des Pompts `tommes@Ubuntu-Server:~$` dargestellt.

1. Zuerst wird ein neues verstecktes Verzeichnis mit dem Namen .ssh im Home-Verzeichnis des aktuell angemeldeten Benutzers angelegt.

`mkdir .ssh`

2. Anschließend wird das soeben erstellte Verzeichnis mit den entsprechenden Rechten versehen.

`chmod 700 .ssh`

3. Wechsel nun in dieses Verzeichnis

`cd .ssh`

4. Der Prompt sollte an dieser Stelle das Verzeichnis als Bestätigung enthalten, was in etwa so aussehen sollte

`tommes@Ubuntu-Server:~/ssh$`

5. Weiter geht es mit dem vi-Editor der beim Aufruf die Datei authorized_keys erstellen bzw. bearbeiten soll.

`vi authorized_keys`

**Anmerkung:** An dieser Stelle wird es etwas knifflig, denn der vi-Editor ist zwar einer der beliebtesten Texteditoren unter Linux, aber in der Bedienung sehr gewöhnungsbedürftig. Daher sollten die folgenden Anweisungen genau befolgt werden. Wenn man sich irgendwo vertippt hat, sollte man am besten durch Drücken der **Escape-** bzw, **Esc**-Taste in den Befehlsmodus zurückkehren und das Dokument schließen, ohne zu speichern. Dies geschieht durch Eingabe von `:q!` Danach einfach wieder von vorne anfangen.

6. Zunächst benötigst du noch den öffentlichen Schlüssel, den du am Anfang dieser Anleitung aus PuTTYgen kopiert und in einer Textdatei gespeichert hast. Öffne die Datei, markiere den öffentlichen Schlüssel, klicke mit der rechten Maustaste auf den markierten Text und kopiere den öffentlichen Schlüssel erneut in die Zwischenablage. Wechsle dann zurück zum Terminalfenster, um im vi-Editor vom Befehlsmodus in den Eingabemodus zu wechseln. Gib dazu einfach ein...

`i`

7. ... ein, bewege den Mauszeiger in das Terminalfenster und drücke die rechte Maustaste. Dadurch wird der öffentliche Schlüssel aus der Zwischenablage in die geöffnete Datei authorized_keys des vi-Editors eingefügt. Das Ganze sollte ungefähr so aussehen...

![20_PuTTY_Terminal](/images/20_PuTTY_Terminal.png)

8. Wenn alles gut aussieht, drücke die **Escape-** bzw, **Esc**-Taste um zurück in den Befehlsmodus wechseln und beende den vi-Editor durch die Eingabe von...

`:qw!`

9. Du solltest dich wieder auf der Konsole wiederfinden. Beende die Terminalsitzung indem du...

`exit`

... eingibs. Das Terminalfenster sollte sich automtisch schließen.

## Einrichten von PuTTY für die Authentifizierung mit Schlüsseln
1. Starte **PuTTY** erneut aus der Liste der Windows-Programme.
2. Trage im Abschnitt **Specify the destination you want to connect to / Kost Name (or IP address)** und **Port** die IP-Adresse des Remote-Servers ein, mit dem du dich verbinden möchtest und passe ggf. den zu verwendenden Port an. Dieses Beispiel verwendet die IP-Adresse 172.16.1.12 und den Port 22.
3. Wähle im Abschnitt **Specify the destination you want to connect to / Connection type** die Option **SSH** aus.

![12_PuTTY_Configuration](/images/12_PuTTY_Configuration.png)

4. Gehe im linken Abschnitt **Category:** zum Punkt **Connection / Data** und trag im rechten Abschnitt unter **Login details / auto-login username** den Benuternamen ein, mit dem du dich auf deinen Remote-Server verbinden möchtest. Wenn das verwendete System eine direkte Authentifizierung mit Schlüssel zum Superuser **root** zulässt, kann an dieser Stelle auch **root** eingetragen werden.
5. Wähle im gleichen Abschnitt unter **When username is not specified** die Option **Prompt** aus.

![13_PuTTY_Configuration](/images/13_PuTTY_Configuration.png)

6. Gehe im linken Abschnitt **Category:** zum Punkt **Connection / SSH / Auth / Credentials** und trage im rechten Abschnitt **Public-key authenification / Private key file for authentification:** den Pfad zu deinem **privaten** Schlüssel ein, den du am Anfang mit PuTTYgen erstellt und gespeichert hast. Benutze dazu am besten die Schaltfläche **Browse**, um die entsprechende Datei mit der Endung .ppk auszuwählen. In diesem Beispiel lautet der Dateiname puttygen-rsa-key.ppk.

![14_PuTTY_Configuration](/images/14_PuTTY_Configuration.png)

7. Gehe im linken Abschnitt **Category:** zurück zum Punkt **Session** und trag im rechten Abschnitt unter **Load, save or delete a stored session / Saved Sessions** einen Namen für die Verbinung ein und klicke anschnießend auf **Save**

![15_PuTTY_Configuration](/images/15_PuTTY_Configuration.png)

8. Damit hast du in Zukunft die Möglichkeit, die soeben erstellte Konfiguration innerhalb von PuTTY auszuwählen, um dich mit deinem Remote-Server per Schlüsselaustausch zu authentifizieren.

![16_PuTTY_Configuration](/images/16_PuTTY_Configuration.png)