~. Tilde Punkt . beendet Sitzungen out-of-bandZuerst braucht man ein Schlüsselpaar, falls man noch keines hat, kann man sich so eines generieren:
> ssh-keygen -b 2048 -t rsa
! Ein vorhandenes Schlüsselpaar wird damit überschrieben.
Das Kommando generiert einen 2048 Bit langen RSA-Key für SSH Protokoll Version 2 - die Standardlänge von 1024 Bit wird nicht mehr als unumstritten sicher betrachtet. Anmerkung: 2048 Bit ist übrigens nicht doppelt so sicher wie 1024 Bit, sondern 2^1024 mal sicherer (ausgerechnet ist das eine Dezimalzahl mit mehr als 300 Stellen!).
Danach muss man den öffentlichen Schlüssel auf den entfernten Rechner übertragen:
> ssh-copy-id -i .ssh/id_rsa.pub remoteuser@remotehost.example.net
Auf dem Remotesystem wird dann der lokale öffentliche Schlüssel in die Datei ~/.ssh/authorized_keys aufgenommen. Ebenso wird in der lokalen Datei ~/.ssh/known_hosts der öffentliche Schlüssel des Remotesystems aufgenommen.
Falls localuser ein anderer Username als remoteuser ist (also so wie im Beispiel oben), dann braucht man noch folgenden Eintrag in der lokalen ssh-Config:
# ~/.ssh/config Host remote Hostname remotehost.example.net User remoteuser # ForwardX11 yes # nur wenn man jedes mal auf dem Remotesystem X11-Programme starten will. # HostKeyAlias remote # nur für spezielle Fälle ;) # Port 42 # nur für spezielle Fälle ;)
Keine ungeschützten Keys benutzen!
Eine sicherere Alternative zum Passwortlosen Schlüssel bietet sshagent, beschrieben in OpenSSH key management, Part 1 (von IBM) und den darauf folgenden Artikeln.
Siehe auch http://www.schlittermann.de/ssh.
Der SSHagent kann immer via .bash_profile als funktion aufgerufen werden.
sshagent() { if ps -o "%p %c" -u `id -u` |grep ssh-agent; then set $(ps -o "%p %c" -u $(id -u)|grep ssh-agent ) SSH_AGENT_PID=$1 export SSH_AGENT_PID SSH_AUTH_SOCK=$(find /tmp/ -type s -name "agent.$(( $1 - 1 ))" -uid $(id -u)) export SSH_AUTH_SOCK echo "ssh-agent lief bereits" else eval $(ssh-agent ) ssh-add ~/.ssh/id_rsa echo "ssh-agent wurde gestartet" fi } export -f sshagent
In die .bashrc kommt dann nur
sshagent