• Teilen
  • Bookmark "SSH" auf del.icio.us
  • Bookmark "SSH" auf Digg
  • Bookmark "SSH" auf Reddit
  • Bookmark "SSH" auf StumbleUpon
  • Bookmark "SSH" auf Facebook
  • Bookmark "SSH" auf Twitter
  • Bookmark "SSH" auf Slashdot

SSH

SSH ist ein Protokoll um einen anderen Rechner über das Internet oder über ein lokales Netz zu warten und zu steuern. In diesem Wikibeitrag wird auf die grundlegende Benutzung und Konfiguration von ssh sowie den Login mit Public-Keys eingegangen. Der Dienst SSH läuft standardmäßig über Port 22.

Softwarevoraussetzungen: Paketverwaltung | Texteditor
Schwierigkeitsgrad: Mittel
Ausgetestet mit folgenden Betriebssystemen: Ubuntu (Jaunty, Karmic, Lucid, aktuelle Versionen) | Debian (Lenny, Squeeze, Wheezy) | teilweise auch andere Distributionen

Achtung! sudo: In dieser Anleitung verdeutlicht der Befehl sudo, dass die folgende Codezeile mit Root-Rechten ausgeführt werden muss. In normalen Ubuntu Installationen (Root-/VServer siehe Debian) kann dies durch den Befehl sudo erreicht werden.
Bei Debian wird bei der Installation ein Passwort für den Root-Benutzer festgelegt, so kann man sich entweder direkt als Root oder als „normaler“ Benutzer mit Eingabe von su als Root einloggen (Root-Passwort benötigt) → sudo bleibt dann überflüssig!

Server (Backend)

Auf dem zu steuernden Rechner installiert man das Paket openssh-server:

user@server:~$ sudo apt-get install openssh-server

und kann dann noch bei Bedarf die Konfig in /etc/ssh/sshd_config bearbeiten, z.B. wenn ein zusätzlicher TCP-Port verwendet werden soll (siehe unten).

Client (Frontend)

Auf dem Clientrechner, der eine Verbindung zu dem Server herstellen soll öffnet man eine Konsole/Terminal und gibt folgendes ein:

user@client:~$ ssh benutzer@ip_des_servers

danach wird man zu einer Bestätigung der Verbindung gebeten, gefolgt von einer Passworteingabe.

Beispiel

Unser Server ist unter 192.168.2.2 erreichbar und wir haben auf dem Server den Benutzer User eingerichtet, also geben wir folgendes in unser Terminal ein:

user@client:~$ ssh User@192.168.2.2

und schon haben wir eine Verbindung

Wer lieber auf eine GUI setzt kann sich eines dieser Pakete installieren:

  • gnome-rdp
  • kssh
  • putty

Um von Windows auf einen Linuxrechner zu verbinden empfiehlt sich das Programm Putty in der Windowsversion.

Login ohne Passwort - Public-Keys

Mit so genannten Public-Keys kann man ohne Passworteingabe auf dem Server authentifizieren, der Kniff liegt dabei, individuelle Keys auf einem Klienten zu generieren und diese auf den Server zu kopieren - natürlich mit Passwortabfrage beim Kopieren.

Client

Auf dem Clienten führt man Folgendes aus:

user@client:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ich/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/ich/.ssh/id_rsa.
Your public key has been saved in /home/ich/.ssh/id_rsa.pub.
The key fingerprint is:
4c:d1:02:f6:47:9f:6e:8c:95:e7:76:af:e5:65:85:6d ich@client
The key's randomart image is:
+--[ RSA 2048]----+
|      o....      |
|     . ..o.. o   |
|        o.. = .  |
|       o . = o o |
|        S . + + E|
|           . . oo|
|                =|
|               =.|
|              . .|
+-----------------+

Erklärung:
Enter file in which to save the key (/home/ich/.ssh/id_rsa): kann mit der Eingabetaste bestätigt werden
Enter passphrase (empty for no passphrase): hier ein Passwort eingeben, dass den Key schützt, nur mit diesem kann man die Keys nutzen
Enter same passphrase again: dieses Passwort noch einmal eingeben….

Nun muss man den Key noch auf den Server kopieren, dies geschieht so (auch auf dem Klienten):

user@client:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@server      #server durch IP oder Hostname des Servers ersetzen; user durch den Benutzer auf dem Server ersetzen
user@server's password: 
Now try logging into the machine, with "ssh 'user@server'", and check in:
 
  .ssh/authorized_keys
 
to make sure we haven't added extra keys that you weren't expecting.


Anschließend kann man sich mit

user@client:~$ ssh user@server

ohne Passworteingabe einloggen…

Verschiedene Benutzer

Dieser generierte Key lässt sich mit beliebig vielen Usern auf dem Server nutzen (er muss nur für jeden zu authentifizierenden Benutzer einmal auf den Server kopiert werden), wichtig ist nur, dass alle SSH Verbindungen zum Server getrennt werden, bevor der Key für einen anderen Benutzer kopiert wird, ansonsten kann es zu diesem Fehler kommen:

Agent admitted failure to sign using the key.

Dazu existiert hier eine Lösung.

SSH hinter einer Firewall nutzen

Will man beispielsweise von einem Firmennetzwerk aus per SSH auf den eigenen Server zurückgreifen, ist dies mitunter schwierig, da Port 22 in der Firmen-Firewall gesperrt ist. Dies gilt auch für viele öffentliche Netzwerke und ähnlichem (Hotspots in Hotels, Restaurants, Schulnetze & Co.). Die auf einem Homeserver zu bevorzugende Methode wäre in diesem Fall einen VPN-Dienst auf Port 443 laufen zu lassen, da die Ports für HTTP und HTTPS (80 und 443) für Zugriffe ins Internet in der Regel freigeschaltet sind. Nach einer Einwahl in das VPN hätte man Zugriff auf den Server. Außerdem wäre dann die Nutzung von HTTPS (Port 443) durch den Webserver noch möglich, da z.B. der VPN-Dienst OpenVPN in der Lage ist den HTTPS-Traffic automatisch an den Webserver zu übergeben.

Alternativ kann man den sshd auch zusätzlich auf Port 443 laufen lassen. Den SSH-Port in diesen Port-Bereich zu verlegen und nach außen zu öffnen, ist aber nur bei dementsprechenden Sicherungsmaßnahmen zu empfehlen. Auch kann auf diesem Port anschließend kein Webserver mehr laufen (also kein HTTPS mehr möglich). Auf einem Root-/V-Server oder einem Homeserver, auf dem der SSH-Port so oder so geöffnet und hoffentlich auch gesichert ist, bietet sich diese Methode aber durchaus an. In einem unsicheren Netz (z.B. unverschlüsseltes WLAN) kann nun der eigene Traffic (z.B. HTTP, SMTP, FTP, usw.) über einen SSH-Tunnel über das sichere Netz des SSH-Servers getunnelt werden (siehe hier). Auch können so dann wieder weitere Firewall-Restriktionen umgangen werden. Dies ist mit einem VPN natürlich auch möglich.

In der /etc/ssh/sshd_config trägt man hierzu den zusätzlich zu verwendeten TCP-Port ein. Nach einem Neustart des SSH-Dienstes kann man sich nun wie folgt verbinden:

user@client:~$ ssh -p 443 benutzer@ip_des_servers

chrisge 2013/02/03 13:44

Diskussion

Christoph Winklerchrisge, 2013/01/26 12:59

[26.01.2013] Änderungen:

  • Neuer Abschnitt „SSH hinter einer Firewall nutzen“ aus von olli eingefügten Bemerkungen erstellt
Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen:
WOQFU
 
  • Teilen
  • Bookmark "SSH" auf del.icio.us
  • Bookmark "SSH" auf Digg
  • Bookmark "SSH" auf Reddit
  • Bookmark "SSH" auf StumbleUpon
  • Bookmark "SSH" auf Facebook
  • Bookmark "SSH" auf Twitter
  • Bookmark "SSH" auf Slashdot
Sonstiges
Drucken/exportieren
Archiv

Archivierter Inhalt der alten Seite