Timos Blog

SSH Key ba­sier­te Au­then­ti­fi­zie­rung auf Ser­ver ein­rich­ten

SSH ist ein Pro­to­koll, um ei­ne ver­schlüs­sel­te Ver­bin­dung zu ei­nem Rech­ner oder Ser­ver her­zu­stel­len und ist ins­be­son­de­re bei der Linux-​Administration die häu­figs­te Ver­bin­dungs­art. Stan­dard­mä­ßig mel­det sich der Nut­zer da­bei per Be­nut­zer­na­me und da­zu­ge­hö­ri­gem Pass­wort beim Ser­ver an. In die­ser An­lei­tung möch­te ich dir nun ei­ne wei­te­re Me­tho­de vor­stel­len –  der SSH Key ba­sier­ten Au­then­ti­fi­zie­rung.

Wie funk­tio­nie­ren SSH Keys?

Wie be­reits zu Be­ginn er­wähnt, gibt es ver­schie­de­ne Mög­lich­kei­ten, ei­ne Ver­bin­dung per SSH mit dem Ser­ver her­zu­stel­len. Die ein­fachs­te und dir si­cher­lich be­reits be­kann­te ist der Log­in mit Nut­zer­na­me und Pass­wort. Dies ist je­doch nicht die be­quems­te und zu­gleich deut­lich si­che­re Va­ri­an­te.

Ob­wohl die Pass­wör­ter al­le ver­schlüs­selt zum Ser­ver ge­sen­det wer­den, sind die­se oft we­nig kom­plex oder lang ge­nug, um vor An­grei­fern als si­cher zu gel­ten. Zwar gibt es mit Fire­walls wie fail2ban Mög­lich­kei­ten, dass et­wa feh­ler­haf­te Log­in­ver­su­che zum Ban füh­ren, den­noch ha­ben sich SSH Keys als die bes­se­re Va­ri­an­te her­aus­ge­stellt.

SSH Keys be­stehen aus ei­nem Schlüs­sel­paar:

  • ei­nem pri­va­ten Schlüs­sel (engl pri­va­te key, der nur dem Nut­zer bzw. dem Rech­ner des Nut­zers be­kannt ist und nie­mals mit an­de­ren ge­teilt wer­den darf) und ei­nem dar­aus er­stell­ten
  • öf­fent­li­chen Schlüs­sel (engl. pu­blic key, der spä­ter zur SSH Au­then­ti­fi­zie­rung ver­wen­det wird).

Das ge­nia­le an die­ser Me­tho­de ist, dass der öf­fent­li­che Schlüs­sel mit je­dem ge­teilt wer­den kann. Wenn du z.B. Zu­griff auf ei­nem Ser­ver von ei­nem Be­kann­ten be­kom­men möch­test, so gibst du dei­nem be­kann­ten den öf­fent­li­chen Schlüs­sel, den er dann im Ser­ver hin­ter­legt. So kannst du dich dann auf dem Ser­ver ein­log­gen, oh­ne dass dein Be­kann­ter ir­gend­wel­che ge­hei­men Da­ten wie zum Bei­spiel Pass­wör­ter von dir kennt. Nur der pri­va­te Schlüs­sel kann den öf­fent­li­chen Schlüs­sel ent­schlüs­seln.


In­stal­la­ti­ons­an­lei­tung

Hier wird dir ge­zeigt, wie SSH Keys er­stellt und ver­wen­det wer­den. Zu­vor soll­test du je­doch un­be­dingt den Ab­schnitt „Wich­ti­ge Tipps“ le­sen und am bes­ten auch be­fol­gen, um mög­li­che Si­cher­heits­ri­si­kos zu re­du­zie­ren.


Schritt 1: Wie er­stel­le ich ei­nen SSH Key?

Der ers­te Schritt be­steht im Ge­ne­rie­ren ei­nes SSH Keys. Die­ser Schritt soll­te nicht auf dem Ser­ver, son­dern auf dei­nem PC aus­ge­führt wer­den. So­fern du kei­nen PC mit Win­dows ver­wen­dest, kannst du es auch auf dei­nem lo­ka­len Ser­ver wie z.B. Raspber­ry Pi aus­füh­ren.

Da­zu gibst du fol­gen­de Be­fehl in der Kon­so­le ein:

ssh-keygen -t dsa

Stan­dard­mä­ßig wer­den die Keys in /home/Benutzername/.ssh/id_rsa ge­spei­chert. Dies kannst du mit En­ter be­stä­ti­gen.

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

An­schlie­ßend musst du ein Pass­wort für den pri­va­te key ver­ge­ben und die­ses an­schlie­ßend er­neut ein­ge­ben. Der Schritt ist zwar op­tio­nal, ist aber drin­gend zu emp­feh­len. Da das Kenn­wort nur sel­ten be­nö­tigt wird, kannst du hier ein lan­ges, zu­fäl­lig ge­ne­rier­tes Pass­wort ver­wen­den.

Nun hast du die pri­va­te und pu­blic keys er­stellt, die zur Au­then­ti­fi­zie­rung per SSH ver­wen­det wer­den kön­nen. Im nächs­ten Schritt muss der pu­blic key nun auf den Ser­ver ko­piert wer­den, auf dem du dich ein­log­gen möch­test.

Schritt 2: Wie ver­wen­de ich ei­nen SSH Key?


Die ein­fachs­te Me­tho­de zum „In­stal­lie­ren“ ei­nes pu­blic keys auf ei­nen Re­mo­te Ser­ver ist das Tool ssh-​copy-​id.

  • Grund­vor­aus­set­zung: Du bist mo­men­tan auf dem PC/​Server ein­ge­loggt, auf dem du den SSH Key er­stellt hast. Eben­so musst du Zu­griff auf den Re­mo­te Ser­ver ha­ben.

Ge­be in der Kon­so­le fol­gen­des ein:

ssh-copy-id [email protected]_Host
  • Be­nut­zer­na­me gibt den User­na­me auf dem Re­mo­te Ser­ver an.
  • Remote-​Host ist die IP bzw. der Host­na­me des Re­mo­te Ser­vers

Mög­li­cher­wei­se musst du noch mit yes die Ein­ga­be be­stä­ti­gen.

An­schlie­ßend wirst du noch auf­ge­for­dert, das Pass­wort des Nut­zers auf dem Re­mo­te Ser­ver ein­zu­ge­ben.


Wich­ti­ge Tipps

Die Schrit­te eins und zwei ha­ben dir ge­zeigt, wie SSH Keys er­zeugt und in­stal­liert wer­den. Je­doch gibt es ei­ni­ge Punk­te, die du un­be­dingt be­ach­ten soll­test.


Tipp 1: Nicht den Be­nut­zer root für SSH ver­wen­den

Häu­fig log­gen sich Nut­zer di­rekt mit dem Be­nut­zer root in den Ser­ver ein. Der Be­nut­zer root ver­fügt i.d.R. über root-, al­so Ad­mi­nis­tra­ti­ons­rech­te und kann sämt­li­che Ser­ver­ein­stel­lun­gen und Da­ten ver­än­dern. Um für ei­nen mög­li­chen An­grei­fer den Zu­griff zu er­schwe­ren, emp­fehlt es sich, ei­nen nicht-​root-​Nutzer an­zu­le­gen, der et­wa für den SSH Log­in ver­wen­det wird.

Nach dem SSH Log­in kannst du schließ­lich im­mer­noch mit dem Be­fehl su­do -i nach ei­ner Pass­wort­ein­ga­be zum root wech­seln.

Um ei­nen Be­nut­zer für SSH an­zu­le­gen, gehst du wie folgt vor (da­bei musst du per root ein­ge­loggt sein):

  • Er­stel­len ei­nes neu­en Be­nut­zers:
useradd -m -d /home/neuerBenutzername -s /bin/bash neuerBenutzername
  • ein­log­gen in neu­en Be­nut­zer:
su neuerBenutzername
  • Be­fol­gen der Schrit­te 1 bis 2 (sie­he wei­ter oben)

Tipp 2: SSH Log­in per Nut­zer­na­me und Pass­wort sper­ren

Es er­gibt Sinn, zu­künf­tig bei al­len SSH-​Verbindungen auf SSH Keys zu be­stehen. Da­durch ist der Log­in per Be­nut­zer­na­me und Pass­wort nicht mehr mög­lich.

Wich­tig ist, dass vor die­sem Schritt un­be­dingt ge­tes­tet wer­den soll­te, ob der Log­in per SSH Key funk­tio­niert. Denn wenn nicht, hast du dich vom ei­ge­nen Ser­ver aus­ge­sperrt.

Um den Passwort-​Login zu de­ak­ti­vie­ren, musst du die Da­tei sshd_​config im Ver­zeich­nis /​etc/​ssh edi­tie­ren. Das geht am bes­ten mit:

nano /etc/ssh/sshd_config

Su­che dar­in nach Pass­wor­dAu­then­ti­ca­ti­on und än­de­re

Pass­wor­dAu­then­ti­ca­ti­on yes zu Pass­wor­dAu­then­ti­ca­ti­on no

Star­te an­schlie­ßend den SSH-​Dienst neu (da­bei kann die SSH-​Verbindung kurz ab­bre­chen):

service ssh restart

Kategorien: Raspberry Pi, Server

FHEM mit Be­nut­zer­na­me und Kenn­wort ab­si­chern » « FHEM auf dem Raspber­ry Pi in 2 Schrit­ten in­stal­lie­ren

1 Kommentar

  1. Hal­lo, dan­ke für die An­lei­tung.
    Ha­be bei mir auf dem Ser­ver (Ubun­tu Ser­ver 16.04) SSH ein­ge­rich­tet. Das Pro­blem wel­ches ich nun ha­be ist, dass wenn ich den Ser­ver ein­schal­te und mich dann per SSH an­mel­den will der Key nicht ak­zep­tiert wird (ser­ver re­fu­sed our key). Mel­de mich dann mit dem Pass­wort an. wenn ich da­nach die Ver­bin­dung wie­der tren­ne und mich er­neut mit dem SSH Key an­mel­de geht es oh­ne Pro­ble­me, auch dau­er­haft. Nächs­tes mal den Ser­ver ein­ge­schal­tet oder neu ge­star­tet geht es beim ers­te mal wie­der nicht mehr und die wei­te­ren ma­le funk­tio­niert es.
    Ver­bin­den tu ich mich mit Put­ty auf Win­dows 7. Ir­gend ei­ne Idee?

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Copyright © 2019 Timos Blog

Hoch ↑