RSS

Schlagwort-Archive: putty

SSH: Shell-Login ohne Passwort auf Windows und Linux

SSH: Shell-Login ohne Passwort auf Windows und Linux

Motivation

Ich habe ein kleines, bescheidenes Heimnetzwerk, mit Linux- und Windows-Rechnern. Darauf laufen die Betriebssysteme Ubuntu, Linux-Mint, Windows7 und Windows8. Unter Linux arbeite ich gerne auf Shell-Ebene, um administrative Aufgaben zu erledigen. Nun ist es ziemlich mühsam, sich jedesmal per Username/Passwort auf diesen Systemen remote einzuloggen. Wenn auf dem Ziel-System (aka Server) ein SSHDaemon (aka Service) läuft, dann ist es auf Client-Seite ein Kinderspiel sich ohne diese lästige Abfrage auf dem Server einzuloggen, egal, ob es sich um einen Windows-Client, oder einen Linux-Client handelt. Warum sich also nicht die Mühe machen, alle Rechner seines Systems so zu konfigurieren, dass ein Auto-Login möglich ist. Man identifiziert sich dann nur nch einmalig auf einem Client, und kann auf alle anderen Rechner automatisch auf Shell-Ebene zugreifen.

 

Server installieren/konfigurieren

Linux 

OpenSSH ist auf Linux-Systemen als SSH-Server/Client weit verbreitet. Ich verwende in meinem Heimnetz ausschließlich Ubuntu bzw. Derivate von Ubuntu und werde deshalb im folgenden die Linux-Lösungen speziell dafür beschreiben.

Am einfachsten man installiert das Paket „ssh“, es enthält alle Programme für Client und Server. Geizhälse können auch nur den Server mit dem Paket „openssh-server“ installieren.

sudo apt-get install ssh

 

Die Installation und Konfiguration erfolgt automatisch, nach Abschluss sollte man einen Listener auf Port sehen:

sudo lsof -i (Alternativ: sudo netstat -lptu oder sudo netstat -tulpn)

 

ssh_lsof_i 

Im Beispiel wird als PID die Nummer 8331 angegeben. Will man noch wissen, auf welchem Port der sshd horcht, hilft der folgende Befehl weiter:

sudo netstat -pan | grep 

 

ssh_netstat_pan

Im o.g. Beispiel wäre also das SSH Standardport „22“ durch den SSH-Daemon belegt.

Alternativ kann man mit folgendem Befehl den Status des Daemons abfragen:

/etc/init.d/ssh status 

 

Jeder Benutzer, der Zugang auf den Server erhalten soll, muss einen Account besitzen. Bei den meisten Linux-Distributionen geschieht das, auf der Kommandozeile, mit dem Befehl „adduser“. Will man also beispielsweise den Benutzer „rainer“ einrichten, dann kann man folgenden Befehl eingeben:

sudo adduser rainer<br /><br />

Damit wäre die Installation/Konfiguration auf einem Linux-System erledigt.

 

Windows 

Es gibt auch OpenSSH für Windows, allerdings scheint mir die Installation und Konfiguration nicht mehr ganz zeitgemäß. Sofern man nicht kommerziell arbeitet, ist der  Bitvise SSH-Server kostenlos und, meiner Meinung nach, der Favorit. Als Download empfehle und verwende ich den Bitvise SSH Server installer (aktuell: Version 5.58), die Installation erfolgt automatisch und ist denkbar einfach.

Nach der Installation kann man mit dem „Bitvise SSH Control Panel“, zu finden unter „C:Program FilesBitvise SSH ServerBssCtrl.exe“, die Konfiguration einrichten:

ssh_bv_cp_1

Man sollte darauf achten, dass der Server gestartet ist, wenn nicht kann man das über „Start Server“ nachholen…

Jeder Benutzer, der Zugang auf den Server erhalten soll, muss einen lokalen System-Account besitzen. Das geschieht z.B. unter Windows 7 mit Start > Systemsteuerung > Benutzerkonten > Benutzerkonten > Hinzufügen:
ssh_winaccount_einrichten

Mehr ist an dieser Stelle erst einmal nicht zu tun. Der automatisierte Zugang der Clients wird in den folgenden Abschnitten beschrieben.

Hinweis Windows 8:

Unter Windows 8 gibt es neben einem lokalen Account noch einen sog. „Microsoft-Account“ (Windows-Live ID). Der „Microsoft-Account“ ist ein Internet-Account und ermöglicht den Zugriff auf  Internet Dienste von Microsoft (Skydrive etc.), sowie auf Social-Netzwerk-Dienste, wie Facebook etc. Um den Bitvise SSH Server einzurichten, muss man zudem über einen sog. lokalen Account verfügen!

Dazu bewegt man die Maus auf die rechte, obere Ecke des Bildschirms und klickt „Einstellungen“ an:

ssh_win8_einstellungen

Danach wählt man rechts unten „PC Einstellungen ändern“. Danach unter „PC-Einstellungen“ > „Benutzer“ > „Ihr Konto“ den Button „Zu einem lokalen Konto wechseln“ anklicken.

ssh_win8_einstellungen2

Richtet Euch ein lokales Konto ein und meldet Euch mit diesem Konto an, danach ist die Installation des Bitvise SSH-Server möglich! 

 

Client

Damit ein Client bzw. Benutzer sich auf dem Server einloggen kann, muss für ihn ein Account auf dem Server existieren! Ansonsten ist das Prinzip ist immer das Gleiche: Schlüsselpaar (Private- und Public-Key) erzeugen, Public-Key auf Server übertragen, Client den Private-Key mitteilen, auf Server einloggen.

 

Linux

Auch auf dem Linux-Client sollte man OpenSSH installieren und als Server einrichten, sofern man der Client zum Server wird und man sich auf dort remote einloggen will.

Das Schlüsselpaar lässt sich einfach durch folgenden Befehl erzeugen:

ssh-keygen -t rsa

 

ssh_keygen

Mit diesem Befehl wurde für den aktuellen Benutzer im Verzeichnis „~/.ssh“ das Schlüsselpaar erzeugt:

  • Private-Key: „id_rsa“
  • Public-Key: „id_rsa.pub“

Der Public-Key muss dem SSH-Server bekannt gemacht werden. Das geschieht einfach durch Kopieren der Datei „id_rsa.pub“ auf den Server.

Auf einem Linux– bzw. OpenSSH-Server kann man glücklicherweise den Befehl „ssh-copy-id“ verwenden, der nicht nur das Kopieren des Public-Key übernimmt, sondern auch die Konfiguration auf dem Server. Auf dem Linux-Client also folgenden Befehl ausführen:

ssh-copy-id -i ~/.ssh/id_rsa.pub User@SSH-Server

 

ssh_copy_id 

Dann wird auf dem Linux– bzw. OpenSSH-Server unter dem entsprechenden User im Verzeichnis „~/.ssh“ eine Datei „authorized_keys“ mit dem Public-Key des Users angelegt bzw. um diesen erweitert.

Sollte das Programm „ssh-copy-id“ fehlen, kann man sich mit folgendem Befehl helfen:

cat ~/.ssh/id_rsa.pub | ssh user@machine "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"

Auf einem Windows-Bitvise-SSH-Server funktioniert weder „ssh-copy-id“, noch der Workaround, da er eine Windows-Shell verwendet, die Linux-Shell Befehle nicht erkennt. Es ist deshalb notwendig die Public-Key-Datei manuell auf den Server zu transferieren und auf diesem zu importieren.

Meine Vorgehensweise:

  1. Temporäres Verzeichnis auf Windows-Server anlegen (z.B. „C:loeschen“)
  2. Public-Key („~/.ssh/id_rsa.pub“) in temporäres Windows-Verzeichnis kopieren
    ssh_scp_windows_1
  3. Public-Key in Bitvise-SSH-Server (im Beispiel OS: „Windows8“, DNS: „vostro“) importieren 
    ssh_bitvise_import1
    ssh_bitvise_import2
    ssh_bitvise_import3
    ssh_bitvise_import4
    ssh_bitvise_import5
    ssh_bitvise_import6
  4. Danach kann man sich per SSH, ohne Passwort-Abfrage, einloggen. Als Shell dient „CMD.EXE“ auf Windows:
    ssh_bitvise_login

 

Windows

Auf Windows-SSH-Clients verwende ich das altbewährte Putty, samt seiner Tools (PuttyGEN etc.). Man kann sich das Komplettpaket für Windows (außer PuttyTel) direkt von der Putty Download Page herunterladen, aktuell: putty-0.62-installer.exe.

Vorgehensweise:

  1. Auf dem Windows-Client einloggen, von dem aus man sich zukünftig per SSH auf einem SSH-Server einloggen will
  2. PuttyGEN starten (puttygen.exe)
    ssh_puttygen_1
  3. Schlüsselpaar mit dem „Generate“ Button erzeugen, die Maus solange bewegen, bis die Erstellung des Schlüsselpaares fertig ist. Darauf achten, dass als Schlüsseltyp „SSH2 RSA“ selektiert ist:
    ssh_puttygen_2
    Nach der Generierung kann man das Schlüsselpaar noch mit einem Kommentar versehen und evtl. ein Passwort vergeben.

    Hinweis: Wenn man ein Passwort vergibt, dann wird dieses auch bei jedem SSH-Login abgefragt! Will man das umgehen, kann man den Pageant (Putty authentication agent) verwenden (pageant.exe), der ebenfalls installiert ist. Es handelt sich hier um ein Hintergrundprogramm, bei dem man das Passwort für den Private-Key eingibt und  danach bei jedem Login, von der Passwort-Abfrage der Keys verschont wird.

    ssh_puttygen_11

  4. Speichern der Keys mit „Save public key“, z.B. als „id_rsa.pubkey“ und „Save private key“, z.B. als „id_rsa.ppk“.
  5. Verteilen des Public-Keys auf den/die SSH-Server.
    1. Für einen Linux– bzw. OpenSSH-Server kann man den Public-Key direkt aus dem PuttyGEN Fenster kopieren und in die Datei  „~/.ssh/authorized_keys“ auf dem SSH-Server einfügen. Alternativ kann die Datei „id_rsa.pubkey“ auf den SSH-Server kopieren, z.B. nach „/tmp/id_rsa.pubkey“. Hierfür kann man putty, pscp.exe (im Putty Verzeichnis), WinSCP, FileZilla etc. verwenden. Eine direkte Verwendung der Datei war bei mir erst möglich, nachdem ich an den Anfang der Datei „ssh-rsa“ eingefügt und den comment am Ende angefügt habe.
      vorher:
      ssh_puttygen_3
      nachher:
      ssh_puttygen_4
      Danach kann man auf dem Server die Datei direkt an die Datei „~/.ssh/authorized_keys“ des betreffenden Users anhängen, z.B. mit „cat /tmp/id_rsa.pubkey >> ~/.ssh/authorized_keys“:
      ssh_puttygen_5
      Hinweis: Falls die Datei „authorized_keys“ noch nicht existiert, kann man sie mit „touch authorized_keys && chmod 600 authorized_keys“ anlegen.
    2. Bei Windows-Bitvise-SSH-Server siehe oben.
  6. Putty starten (putty.exe)
  7. Session zum SSH-Server anlegen und speichern:
    ssh_puttygen_6
  8. Session konfigurieren
    1. Category > Connection > Data, optional hier den Usernamen eingeben, mit dem man sich einloggen will:
      ssh_puttygen_7
    2. Category > Connection > SSH > Auth, hier den Private Key selektieren:
      ssh_puttygen_8
    3. Auf Session zurückgehen und Einstellungen mit „Save“ speichern:
      ssh_puttygen_9
  9. Mit „Open“ die gespeicherte Session öffen. Wenn bei Einrichten des Schlüsselpaares eine Passwort angegeben wurde, wird man nach diesem gefragt. Um das zu vermeiden, kann man, wie bereits erwähnt, den Pageant (Putty authentication agent) verwenden (pageant.exe).
    ssh_puttygen_11
    Mit einem Rechtsklick > Add Keys kann man das Passwort für den Private-Key eingeben und wird bei jedem Login auf dem SSH-Server von einer weiteren Passwortabfrage verschont.
    ssh_puttygen_12

 

Fazit

Ich gebe zu, dieser Artikel existiert wahrscheinlich bereits zig-tausendmal im Web, und wahrscheinlich habe ich das Ganze auch schon zigmal durchgeführt – allerdings habe ich mir immer wieder die Infos mühsam zusammengesucht. Grund genug also, das Ganze in einer Post zusammenzufassen.

Die Konfiguration lässt sich sowohl auf  Windows, als auch auf Linux relativ einfach erledigen und spart dem Heimnetz-Admin-Alltag viel Zeit, die man mit unnötigen Logins verschwendet. Zudem wird das Ganze im Gegensatz zu Telnet oder FTP verschlüsselt – man weiß ja nie, ob sich jemand ins WLAN gehackt und einen Sniffer am Laufen hat. Ohne paranoid wirken zu wollen, aber offensichtlich schein es relativ einfach möglich zu sein (siehe Google: „wlan hacken“), auf ein fremdes WLAN zuzugreifen.

Aber das Tüpfelchen auf dem „i“ sind die Möglichkeiten, die man mit einer SSH-Umgebung machen kann. Da wäre das SSH/OpenSSH/PortForwarding, speziell das X11-Forwarding und andere Features, die mit SSH ermöglicht werden, siehe  25 Best SSH Commands / Tricks.

Links:

Ubuntu Wiki: SSH

OpenSSH

PuTTY Download Page

Bitvise SSH Server installer

25 Best SSH Commands / Tricks

 

 
Hinterlasse einen Kommentar

Verfasst von - Januar 3, 2013 in IT, Linux, Security, Windows

 

Schlagwörter: , , , , , , , , , ,

 
Erstelle eine Website wie diese mit WordPress.com
Jetzt starten