IT-Academy Logo
Sign Up Login Help
Home - Betriebssysteme - Unix - Server/Internet/Netzwerk - ssh RSA authentisierung



ssh RSA authentisierung

Umgang mit ssh RSA schluesseln wird erklaert.


Autor: Franz Schaefer (mond)
Datum: 23-01-2002, 20:15:00
Referenzen: man sshd
man ssh
man ssh-agent
man ssh-add
man ssh-keygen
Schwierigkeit: Fortgeschrittene
Ansichten: 4523x
Rating: Bisher keine Bewertung.

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



| special deluxe |

Übersicht

wir haben bei der diskussion ueber ssh schon gelernt: einlogen mit
passwoertern ist nicht unbedingt immer ideal. abgesehen davon dass das
passwort am rechner von dem aus man ssh aufruft abgehoert werden kann
koennte das passwort am zielrechner mitgelogged werden... d.h. man muesste
idealerweise ein passwort fuer jeden rechner haben.

manchmal will man auch scripts schreiben die automatisch auf einem anderen
rechner einlogen koennen.. damit die authomatisiert ablaufen koennen darf
sollen sie aber nicht nach einem passwort fragen.. und dann will man unter
umstaenden einschraenken was solche scripts tun duerfen... gnau fuer problem
dieser art hat ssh passende loesungen:

anstatt mit passwort kann man mit einem RSA schluessel einlogen.

hat man noch keinen solchen schluessel kann man sich einen anlegen:

ssh-keygen

erzeugt eine paar an schluesseln im verzeichnis .ssh/ mit dem namen
identity und identity.pub

beim erzeuegen wird man nach einer passphrase gefragt. die kann praktisch
beliebig lang sein (nicht nur 8 zeichen wie bei einem passwort) und sollte
auch etwas laenger sein.

identity ist jetzt der eigen (geheime) schluessel. identity.pub ist eine
beschreibung dieses schluessel die man wenn noetig auch veroeffentlichen
koennte. (identiy ist ein binaeres file - nicht mit einem text editor
lesbar). identity.pub koennte z.b. so aussehen:

1024 35 1212807801....viele zahlen in einer zeile....6213233 maxmeier@irgendwo

damit man jetzt mit dem eigenen schluessel wo anders ohne passwort
einlogen kann muss man diesen schluessel am anderen rechner in das file:

.ssh/authorized_keys eintragen. und zwar obiges file genau in eine zeile
schreiben (keinesfalls umbrechen)

(das file muss dem user gehoeren der einlogen koennen soll und sollte nur
fuer diesen lesbar sein)

jetzt kann man vom rechner aus wo man sein identity file hat auf den
anderen rechner aus ohne passwort einlogen. (man muss natuerlich die
passphrase angeben. aber die wird nicht an den anderen rechner
uebermittelt.) fuer automatisiert ablaufende logins muss man natuerlich
die passphrase leer lassen. will man oefter einlogen ist das dauernde
eingeben der passphrase natuerlich muehsam. ebenfalls fuer ein script...
hier kann man ssh-agent nutzen:

ssh-agent bash

wuerde eine bash shell aufmachen die unerhalb des ssh-agent laueft. in
dieser shell kann man dann:

ssh-add

seinen key an den agent weitergeben. (beim ersten mal das passwort
angeben).

danach kann man in dierser shell (oder was immer sonst es fuer ein
programm war dass man mit ssh-agent aufgerufen hat) den key verwenden ohne
die passphrase nochmals eintippen zu muessen.

manche distributionen starten den X11 windowmanger unter ssh-agent. damit
kann man dann in all seinen shells und xterms den schluessel benuezten
nachdem man in einem davon ssh-add gemacht hat.

da der geheime teil des schluessels nicht uebers netzt transportiert wird
und aus dem oeffentlichen teil nicht errechnet werden kann (vorausgesetzt
die NSA hat nicht mathematiker im sold die cleverer sind als der rest der
welt..) so spricht auch nichts dagegen die identity zum einlogen auf
mehreren computern zu verwenden.

will man dennoch verschiedene identitys haben so kann man mit:

ssh-keygen -f blablaschluessel

einen schluessel ins file blablaschluessel und blablaschluessel.pub
erzeugen.

mit

ssh -i blablaschluessel ...

kann man dann den schluessel verwenden..
oder mit

ssh-add blablaschluesse

den schluessel zum agent uebermitteln.


nun ist es zwar sehr praktisch dass man mit den schluesseln (wenn man
keine passphrase setzt) z.b. ein automatisiertes backup eines rechners
machen kann.. oder aehnliches... nur braucht das backup meist root und
meist will man nicht einen schluessel der einem auf einem root werden laesst
irgendwo herumliegen haben... noch dazu nicht einmal mit passphrase
geschuetzt...

dazu kann man die befehle die ein bestimmter key ausfuehren darf
einschraenken:

dazu fuegt man im autorized_keys file for dem entsprechenden schluessel
folgendes an:

command="/etc/mybackupscript.sh",no-pty,no-port-forwarding 1024 35 123321123...

das bewirk dass jedesmal wenn jemand mit diesem key einloggt er
automatisch diesen befehl (hier z.b.: /etc/mybackupscript.sh ) ausfuehrt
und sonst nichts (man kann einen anderen befehl beim ssh client angeben...
ausgefuehrt wird trozdem immer der eingetragene)

no-pty bewikt dass kein terminal fuer die verbindung aufgemacht wird und
no-port-forwarding bewirkt dass alle portfowarding anfragen (-R bzw -L
switche im ssh client) ignoriert werden.

mit:

from="10.11.12.13" 1024 35 1341234534...

koennte man einschraenken dass ein bestimter key nur von einer bestimmten
IP (bzw mit wildcards - siehe manpage) auch von mehreren IPs aus..

EXERCISES:

* diskutiere die sicherheitsvor und nachteile der RSA authentisierung
gegenueber ssh mit passwort authentisierung.

* leg' dir eine identity zu :-) (mit passphrase)

* mach die notwendigen eintrage um mit dieser identiy auf einem anderen
rechner ohne passwortabfrage einlogen zu koennen. (wenn du gerade keinen
anderen rechner hast. kannst du einen anderen account am eigenen rechner
zum testen verwenden)

* verwende ssh-add und ssh-agent um die passphrase nur einmal eingeben zu
muessen und damit oefter einlogen zu koennen.

* erzeug dir einen schluessel namens blakey dem du auf einem anderen
rechner nur ein einziges kommando ausfuehren darf (z.b. "date" oder
"hostname" oder ein kleines script dass date, hostname und uname -a
ausfuehrt oder aehnliches)



_______________________________________________
CD ist ein service von SILVER SERVER
der inhalt unterliegt der GFDL
_______________________________________________



[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04506
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06241
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1140
Comments: 0