Schneller zum SSH-Server verbinden mit automatischem Login
6Wer 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'
Eleganter & rascher als mit einem Skript, kannst du die Abkürzung per Befehls-Alias einrichten.
Z.B. für die Bash (Datei $HOME/.bashrc oder /etc/bash.bashrc):
alias contraconfig=’ssh patrick@123.123.123.123‚
Danke Dice! Ein alias ist natürlich wesentlich eleganter! 🙂 Habe es nachgetragen!
Hallo Leutz,
habe da mal ne frage…..Habe mir eine neue Heizung gekauft (BHKW). Das Touch Display wird mit Opensuse programiert sein. Eine Verbindung auf die Ip des Gerätes habe ich bereits. Aber wen ich z.B. auf entfernte Bildschirme gehe und die IP eingebe
will der immer ein passwort…..das ich ja nicht habe….allerdings habe ich auch schon etwas rum probiert….so 10 std etwa…..ich komme aber immer nur soweit das ein fester kommt in dem steht das daß passwort im Ordner /home/kai/.ssh/know_hosts bereits steht……da stehe aber nur zahlen und buchstaben vielleicht auch befehle….keine ahnung….
habe opensuse 12.1 ja nur instaliert um auf das sch…. bhkw zu kommen
hat jemand einen rat
Die Passwörter werden nicht in Plaintext (klar lesbar) gespeichert. Es besteht also keine Möglichkeit an das Passwort wieder ranzukommen.
Wenn du einen SSH-User hast, solltest du beim Aufbau der Verbindung darauf achten das du dich auch mit den User einloggst username@server.tld.
Ansonsten könntest du von außen an die Festplatte und versuchen die User zu verändern.
Guck dir auch mal die Datei ~/.ssh/config an bzw leg dir die an. Da kann man alles (Hostname/IP, Port, Username, Keyfile,…) schön konfigurieren und braucht dann nur „ssh hostalias“ eintippen und landet auf dem Host.
Auch sehr cool! Danke Strubbl! 🙂