===== Putty mit SSH Key's verwenden ====== Um nicht jedesmal beim Anmelden auf einen Server ein Passwort einzugeben, kann auch mit Schlüsseln gearbeitet werden. Voraussetzung : * Putty mit allen Komponenten herunterladen \\ ( => http://the.earth.li/~sgtatham/putty/latest/x86/putty.zip ) * putty.zip in ein Verzeichnis wie d:\tools\putty entpacken Ablauf: * Putty Key auf dem Windows System mit dem Programm **PuTTYgen.exe** erzeugen * SSH Key bzw. ssh Verzeichnis Struktur auf dem Linux System erzeugen * Den Putty Key von Windows System auf dem Linux System hinterlegen * Putty einrichten, eigenen Privat Key hinterlegen, User setzen * pscp für das Kopieren von Dateien verwenden * Putty Keys in weiteren SSH Programmen verwenden/hinterlegen ==== Putty Key mit PuTTYgen auf dem Windows System erzeugen ==== Mit Hilfe des Programms "PUTTYGEN.exe" wird ein Schlüssel für die Verbindung auf die Linux Systeme erzeugt. * Programm PUTTYGEN.exe starten * SSH-2 RSA auswählen, falls später auch MoboXTerm mit gleichen Public Key verwendet werden soll * SSH-2 DSA auswählen bei Bedarf und Wunsch * * Mit "Generate" Button Key Erzeugung starten * Bei Bedarf Kommentar anpassen z.B. auf User und Hostnamen * Public Key speichern ( im Putty Verzeichnis, in unseren Beispiel unter d:\tools\putty\jupiter_pub.key ) * Private Key speichern ( im Putty Verzeichnis, in unseren Beispiel unter d:\tools\putty\jupiter_priv.ppk ) ohne Passphrase ( damit später der Key ohne weitere Passwort Eingabe verwendet werden kann, zum Beispiel für pscp in einem Batch Programm ) * {{ :windows:putty_key_gen_v01.png?400 | Putty Key erzeugen und Speichern}} * Key für die spätere evtl. Verwendung für openssh exportieren ( Menü Punkt "Conversions"/"Export OpenSSH Key" ) (im Putty Verzeichnis, in unseren Beispiel unter d:\tools\putty\jupiter_openssh.id bzw. jupiter_openssh_rsa.id ) * OpenSSH public Key aus der Box im Programm über die Zwischenablage und einem Editor in einer Datei speichern, siehe Screenshot * {{ :windows:putty_key_gen_v02.png?400 | Open SSH Key aus PuTTYgen Box kopieren und speichern}} * Exit Der OpenSSH Key kann später noch für die Verwendung in anderen SSH Programmen wie MoboXterm nützlich sein, für MoboXterm allerdings nur in der **RSA** Variante! ==== SSH Key’s bzw. SSH Key Struktur auf dem Linux System erzeugen ==== Auf dem Linux System anmelden: ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/oracle/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/oracle/.ssh/id_dsa. Your public key has been saved in /home/oracle/.ssh/id_dsa.pub. # oder alternativ mit RSA in einem Schritt ssh-keygen -t rsa -N '' -q -f ~/.ssh/id_rsa Zwei Dateien werden erzeugt /home/oracle/.ssh/id_dsa und der public key unter /home/oracle/.ssh/id_dsa.pub Mit dem public Key in der Datei /home/oracle/.ssh/id_dsa.pub kann später auf anderen Linux Hosts ebenfalls eine Authentifizierung ohne Passwort eingerichtet werden. Siehe dazu auch den SSH Key Austausch für ein Cluster unter => [[linux:vi#ssh_key_austausch|Wichtige Shell Befehle für den DBA unter Linux / Solaris]] Soll sich der Server selber mit zum Beispiel "ssh localhost" anmelden können (wichtig für Cluster Installationen!), den public key gleich der "authorized_keys" hinzufügen: cat id_dsa.pub >> authorized_keys ==== Windows Key auf dem Linux System hinterlegen ==== Auf dem Linux System den Open SSH Public Schlüssel (den aus der Box von PuTTYgen !) auf dem Linux Server kopieren/transferieren. Ablauf: * Prüfen ob die Datei /home/oracle/.ssh/authorized_keys exisitert, falls nicht diese Datei anlegen * Datei /home/oracle/.ssh/authorized_keys öffen und am Ende den Schlüssel einfügen und speichern ( am einfachsten über die Zwischenablage .-) ) {{ :windows:putty_key_gen_v02_02.png?400 | Public Key in .ssh/authorized_keys hinterlegen}} \\ \\ ==== Putty verwenden - Private Putty Key in Putty für die Verbindung auf den Linux Server hinterlegen ==== Putty öffnen * IP Adresse oder Servernamen angeben * Unter "Connection/SSH/Auth" den private Key von Putty (die Datei mit der ppk Endung!) hinterlegen * Auf "Connection/Data" den Login User Name auf der Linux Maschine hinterlegen (Der User in dessen Keys der Public Key von der Windows Putty Umgebung unter Linux hinterlegt ist!) * {{ :windows:putty_key_gen_v03.png?400 | Putty Private Key hinterlegen }} Nun kann eine Anmeldung ohne Angabe eines Passwortes erfolgen. ==== Das SSH ftp Programm - pscp - mit einem Public Key verwenden ==== Mit pscp können unter Windows über die Kommandozeile Dateien per SSH auf das Zielsystem kopiert werden. Dazu muss der OpenSSH Public Key (der aus der Box von PuTTYgen!) auf dem Zielsystem hinterlegt sein. Das haben wir bereits zuvor mit Putty durchgeführt und getestet. Nun wird pscp mit dem private Windows Putty Key aufgerufen ( Schalter -i ) und es können ohne Passwort Abfrage die Daten kopiert werden. Beispiel für das Kopieren vom Server auf den Windows Rechner mit dem SSH Protokoll 2 ( Schalter -2 ), dem User Oracle ( Schalter -l oracle ) und dem private Key der Putty Umgebung ( Schalter -i ) vom Server 192.168.178.181 die Datei /home/oracle/.bash_profile nach d:\temp . pscp.exe -2 -l oracle -i jupiter_priv.ppk 192.168.178.181:/home/oracle/.bash_profile d:\temp\bash_profile \\ \\ \\ ==== WinSCP mit Key verwenden ==== Das Programm [[http://winscp.net/eng/index.php|WinSCP]] kann direkt mit dem vom Putty generierten Schlüsseln arbeiten. Dazu muss bei den Verbindungsoptionen nur der Hostname, der Linux User und der Pfad zum Schlüssel hinterlegt werden. {{ :windows:putty_key_gen_v04.png?300 | In WinScp Putty Key hinterlegen }} \\ \\ ==== Das Programm MobaXterm mit dem gleichen private Key wie in Putty verwenden (Nur die RSA Variante wird unterstützt!) ==== In **[[http://mobaxterm.mobatek.net/| MobaXterm ]]** kann der gleiche Schlüssel wie in Putty verwendet werden, allerdings NUR wenn wir uns zuvor für die RSA Variante des Keys entschieden haben! Dann können wir den, zuvor mit dem Putty Key Programm PuTTYgen exportierten, privaten OpenSSH Key verwenden. In unserem Beispiel haben wir dazu den privaten Schlüssel in die Datei "jupiter_openssh_rsa.id" exportiert und den public Key aus der Box in PuTTYgen in die Datei "jupiter_openssh.rsa_pub" kopiert. Normalerweise erzeugen wir in MobaXterm mit **ssh-keygen - t rsa** im ersten Reiter (den lokalen Bash Fenster) einen Schlüssel und kopieren den dazugehörigen Public Schlüssel in "id_rsa.pub" in die "authorized_keys" Datei auf dem Linux Client. Damit wir nun in Putty und in MobaXterm den gleichen public Key verwenden können, müssen wir den Putty Private Key (bzw. hier nun die OpenSSH Variante unsers Private Keys) in das Arbeitsverzeichnis von MobaXterm kopieren, damit wir auch die gleichen Private Keys verwenden können! Ablauf: * Ersten Reiter in MobaXterm öffnen ( Bash Emulation auf den lokalen Rechner ) * Mit dem Befehl ssh-keygen -t rsa -N '' -q -f ~/.ssh/id_rsa die Datei Struktur anlegen * Die Putty Key Dateien auf dem Rechner lokalisieren, in unseren Beispiel liegen die Dateien unter D:\tools\putty, \\ wir müssen allerdings in der Bash Emulation den dazu fassenden Unix Pfad finden: * "cd d:" eingeben * cd tools * cd putty * pwd - diese Aufgabe merken * cd * cd .ssh * Den private und public Key in MoboXTerm nun mit der Putty Variante austauschen: * cp /drives/d/tools/putty/jupiter_openssh_rsa.id rsa_id * cp /drives/d/tools/putty/jupiter_openssh.rsa_pub id_rsa.pub * Nun können wir die gleichen Schlüssel in Putty und MobaXterm verwenden * Den public Key hatten wir ja zuvor bereits in unserer Putty Session auf dem Linux System hinterlegt! Wie sieht das im MobaXterm Reiter aus: {{ :windows:putty_key_gen_v04_mobaxterm.png?500 | SSH Key in MobaXterm verwenden }} Test in MobaXterm: Im ersten Reiter per "ssh @>server_name_mit_unseren _public_key" anmelden, wird kein Passwort angefragt, hat es geklappt. Klappt aber nur in der Kauf Edition auch wieder nach dem nächsten Start von Moboterm! ==== Quellen ==== * http://the.earth.li/~sgtatham/putty/0.62/htmldoc/