Patrick Hütter

Schneller zum SSH-Server verbinden mit automatischem Login

Wer oft via SSH-Protokoll zu seinem Linux-Server verbindet weiß, gerade wenn man einen sicheren SSH Server mit nicht Standard-Port konfiguriert hat, wie mühselig immer wieder das Tippen für den Verbindungsaufbau sein kann. Anschließend muss man auch noch das Passwort eingeben. Zwei Schritte die man auch smart verkürzen kann. Das ganze funktioniert sowohl unter Linux, als auch unter Mac.

Mit ssh-keygen -t rsa generieren wir einen public und einen private key. Die Fragen die bei der Generierung gestellt werden könnten mit den Standard-Werten belassen werden. Wenn das Tool das RSA Schlüsselpaar fertig generiert hat, haben wir im jeweiligen Verzeichnis (hier im Benutzerordner unter ~/.ssh/) den private key id_rsa und den public key, der auf *.pub endet (id_rsa.pub).

mobilesystem:.ssh whitenexx$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/whitenexx/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/whitenexx/.ssh/id_rsa.
Your public key has been saved in /Users/whitenexx/.ssh/id_rsa.pub.
The key fingerprint is:
21:GE:KU:ER:ZT:df:7f:ad whitenexx@mobilesystem
The key's randomart image is:
+--[ RSA 2048]----+
|   +.            |
|  o .o           |
|.. +.+. .        |
|...o.... .       |
| =.+.o  S        |
|o o.o.           |
| o o  . .        |
|       . +       |
|       Eo        |
+-----------------+

Den public key kopiert man nun einfach via scp auf den Server (erstmal ins home-Verzeichnis des Users):

mobilesystem:.ssh whitenexx$ scp -P28 id_rsa.pub server.tld:~/

(Der Parameter -P kann weggelassen werden, wenn man den Standard-SSH-Port 22 benutzt)
Danach einfach normal via SSH zum Server verbinden und den public key den wir eben hochgeladen haben ans Ende der ~/.ssh/authorized_keys2 anhängen.
Wenn die Datei nicht existiert, kann man sie einfach davor erstellen ( touch ~/.ssh/authorized_keys2 ).

cat /home/whitenexx/id_rsa.pub >> /home/whitenexx/.ssh/authorized_keys2

Danach kann man den public key noch aus dem Home-Verzeichnis löschen und die SSH-Verbindung mit exit beenden.
Wenn man sich das nächste mal ohne Benutzername und Passwort zu dem Server verbinden will, passiert der Login vollautomatisch.
Ein

ssh server.tld -p28

reicht vollkommen und man ist sofort authentifiziert und mit dem Server verbunden. Hier kann der Port Parameter -p natürlich wieder weggelassen werden.
Es geht noch schneller

Wer es noch schneller haben möchte oder mehrere Server einfach verwalten will, kann die SSH-Verbindungsbefehle auf einfache Shell-Befehle mappen.
Wenn man z.B. einen Server hat, der „contraconfig“ heißt, wäre es doch cool wenn man durch tippen von „contraconfig“ in der Shell direkt mit diesem Server verbunden und authentifiziert wird.
Dafür kann man sich ein entsprechendes Shell-Script schreiben, dass die Verbindung aufbaut. Darin braucht man durch die Authentifizierung via Key kein Passwort hinterlegen, was für zusätzliche Sicherheit sorgt.
Dieses Shellscript kann man dann noch im PATH unter dem Namen „contraconfig“ ablegen. Nach einem Shell-Neustart steht dann der neue Befehl „contraconfig“ zur Verfügung und man kann super einfach und schnell zu diesem Server verbinden. Wenn es jemanden interessiert, kann ich auch noch beschreiben wie das genau funktioniert. 🙂 Viel Spaß beim nachbauen!

Nachtrag (10.03.2012)

Anstatt ein Shellscript zu schreiben und es in den PATH zu legen, kann man auch einfacher einfach einen Alias einrichten. Danke an dieser Stelle für den Kommentar-Hinweis von Dice!

Z.B. für die Bash (Datei $HOME/.bashrc oder /etc/bash.bashrc):

alias contraconfig='ssh username@server.tld'
Die mobile Version verlassen