Oftmals muss man sich auf einem Linux Server einloggen (von einem anderen Linux Server aus) und darf dabei (aus Sicherheitsgründen) den Programmen SSH oder SFTP keine Passwörter mitgeben.
Vorallem natürlich wenn das ganze automatisch erfolgen soll, z.B. von einem Backup Script…
Am Anfang hatte ich erstmal einen Weg gesucht das zu umgehen (wenn ich mein Passwort im Klartext im Script schreiben will, will ich das halt! Der User hatte sowieso nur wenig Rechte!) aber reden wir hier lieber nicht über diesen (definitiv falschen!) Weg 🙂
(Wer es doch wissen will soll mal Google mit dem Stichwort „sshpass“ füttern…)
Für diesen Test sorgen wir dafür dass der User ‚pi‘ vom Host ‚raspi3‘ sich ohne Passwort als User ‚pi‘ auf dem Host ‚pi.de‘ anmelden darf
Zuallererst erzeugen wir auf dem Host pi.de den Zieluser pi:
adduser pi
Als Passwort geben wir einfach mal ‚pipi‘ an.
(jaja, ‚pipi‘ liest sich komisch, ich weiß…)
Nun kann sich jeder User am Host pi.de als User ‚pi‘ anmelden. Ganz einfach so:
(Achtung: Der SSH-Port ist hier nicht 22, sondern 123, deshalb das zusätzliche ‚-p 123‘)
ssh pi@pi.de -p 123
Kennwort ‚pipi‘ eingeben und wir sind drin.
Wir wollen das aber automatisch, also gehen wir auf dem Host pi.de in die Datei ‚/etc/shadow‘ und schalten den Kennwortzugang ab.
In der Zeile des Users ‚pi‘ steht vorher:
pi:$6$T5SkYjVe$TkYn8ZYUzKcKyhE.8RGhs1TLJoQ/okEGyVNrPbBHBfiWY5ZGsHmr6UvnfvyrvEr4WRYrr2jfSoQ35aryPtUT2.:16869:0:99999:7:::
Wir machen aus dem Passwort (die ganz lange Zahlenkombination) einfach einen *. Das heißt dass es kein Passwort gibt.
Das einloggen mit anderen Techniken (Schlüsselaustausch) ist aber weiterhin erlaubt!
Die Zeile sieht dann so aus:
pi:*:16869:0:99999:7:::
Nun gehen wir auf unseren Host ‚raspi3‘ als User ‚pi‘ und erzeugen uns eine Schlüsseldatei, das geht so:
(Passwort vergeben wir keines, die Vorgaben der Dateipfade lassen wir so)
ssh-keygen -t rsa
Es wurden nun in dem Ordner ‚/home/pi/.ssh‘ zwei Dateien erstellt. Einmal unser Teil des Schlüssels mit dem Namen ‚id_rsa‘ und der öffentliche Teil des Schlüssels mit dem Namen ‚id_rsa.pub‘. Den privaten Teil nutzt das Programm ssh automatisch wenn er ihn in diesem Ordner findet. Dafür darf natürlich kein Passwort vergeben sein welches den privaten Teil nochmal extra verschlüsselt.
(wenn eines vergeben ist wird SSH nach dem Passwort für die Schlüsseldatei fragen. Das ist nicht weiter schlimm, nur für ein Backup-Script natürlich nicht wünschenswert.)
Um nun unseren privaten Schlüssel auf den Host ‚pi.de‘ zu bringen können wir entweder das Tool ’ssh-copy-id‘ nutzen, oder aber wir machens von Hand. Von Hand ist mir lieber, weil flexibler.
Also den Inhalt der Datei ‚/home/pi/.ssh/id_rsa.pub‘ in die Zwischenablage kopieren:
(dieser Inhalt ist nicht geheim, den darf man gerne verteilen…)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDczO5DSAIarZjY6xmocCIJio2SrMT5kXuUWneNrVZdFoF6Um7R4U77E9SvskAYiiQ73yfPZY6ZgXAcY4Qtuum1FfkR0HcTP2kX1rcF61cpdWvmeAaT9jkHtY/PK3zlflJra8YBLZzKZXwAnhS9vcK2IBSK+sauBfwLOOKKx84/c+Cr3sNu4eCU+QrImV03rjITqpczldSCQZfA2cMLaq7gmyxwx0Z4/redZINYmhL+RBGTUa6SoeNMTDb4ZhDcRoErRX319MKxpY4lrJZkVfMuIJ6c3YeLM1bIsX45I1jdwq/wtoorTlvziiMnuFR0J4PsOxq0wbIjXCSl6oUdpVSF pi@raspi3
Mit diesem Teil im Gepäck gehen wir nun wieder auf ‚pi.de‘ als User ‚pi‘ und erstellen den Ordner ‚/home/pi/.ssh‘ und die Datei ‚/home/pi/.ssh/authorized_keys‘ und fügen den Inhalt unserer Zwischenablage da rein.
Und… das wars!
Wenn wir nun
ssh pi@pi.de -p 123
als User Pi vom Host raspi3 machen kommen wir als User pi auf dem Host ‚pi.de‘ an. So einfach!
Das hier ist übrigens der Inhalt der Datei ‚/home/pi/.ssh/id_rsa‘ auf dem Host raspi3:
(dieser Inhalt ist jetzt aber GEHEIM und man sollte diesen niemandem zugängig machen!)
-----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEA3MzuQ0gCGq2Y2OsZqHAiCYqNkqzE+ZF7lFp3ja1WXRaBelJu 0eFO+xPUr7JAGIokO98nz2WOmYFwHGOELbrptRX5EdB3Ez9pF9a3BetXKXVr5ngG k/Y5B7WPzyt85X5Sa2vGAS2cymV8AJ4Uvb3CtiAUivrGrgX8CzjiisfOP3Pgq97D buHglPkKyJldN64yE6qXM5XUgkGXwNnDC2qu4JsscMdGeP63nWSDWJoS/kQRk1Gu kqHjTEw2+GYQ3EaBK0V99fTCsaWOJayWZFXzLiCenN2HizNWyLF+OSNY3cKv8LaK K05b84ojJ7hUdCeD7DsatMGyI1wkpeqFHaVUhQIDAQABAoIBAGVHRt7rr7Nm/144 cJt3W9V+jTPDNdK37bR9zqrY4G1wflGKcDSrIVw/m2Y/3/ChpL8lvBAAqGk3GyKa by2+t6aNfqKyOXxFsMHzhh4b9e4ZYzXixjmmTkCAAofnjbGCwPFvDPLLZkjcRgXO fPsPiLmbe3DIWMvICPVo0VkRD0TA2xqtYnQYmGdYpekLZSQUuAI97mpGbM11TnIf 0fjpwgb0V17TMhbYejD7KrkgZvRZcrOw27e5qx6ckJEnvdzkDdgJ/K93JiP/1h00 GOm35h6GxzymRd4kqdkUYD6fQVwsAo1H1u7hgkbMKlZv1IXlvOaYIwrumBR+CiPJ h68ICL0CgYEA8xdulkHxkkDY0901HFQTJGGelnX/4g2xGQjFQAuop+uWkaMYEwu5 cCToxjc9RTI3NFz/hD9p5tpiOvLFkF9ugwurJP3ituAxq1YqbEHMxwhJDtKIxCN0 65IVRjdRMTiK+F8IBGAKrEBK7WOeJkDWC23yQ9V48zNB78Ht24LtDuMCgYEA6IZ5 7Rr+ulRJhgcD1WMo527w8SEC9+6foyWcYkqSzEAITnBcbQmPbYZaV2vIbbrg52v1 ZZmgNwhlDEOwZrIe4dulg653zIRxSaH0WKsBsUia9If8q1GDMtBdccegcEIAvXFR SZaQQtH+lt55lfQTec1Lure4yn5PcYAjtFaaQ3cCgYEAx0ZCJXLRcS8vkB4aV6qk NoK/2l/I76qBrx/9cs8b5uu9do3YQmSuEzxuhW7rDzpm/sntvJ+vVMtZEzHIut1A XrTGC4EExR1sGiR8ilo2YEJugXQdIYxfYG1Ue0cFi+/qHEjq7Ys9tI7P3WJ4Vqt3 y87JdsocaGFwf/bd4cCmTDkCgYAf24TK8n7h4nhsT3u7+aj6BF4oe0Bf3aargJSr dtIj/8XjkUtoeP3YoKayAYdlWUxFCKqHcAPeZl0J0CBUAaVvhltn7jhloeOvlevX Vh6WPn9Ub2kzw6g5Bwk2dIZLuw9E5Uigz2sWbJT38KUx4U3lyzXL8C32OFYEE+1Q YOkjwwKBgHRByU1ToBqI28mq9tYAnl08JT4vglX31HlbO4iTDubRRtotZ2Lk3jo0 JAiX3GT13JFOJ/y0teAh9G069aZlvFIn66o0uXYp4g/lDuj/RiQgaDKMx6tWzYcz ZDcuod2K+fNhU7/w3jVF7CBG5Zwjj814/iMScdXbC+aWDGDmTmf/ -----END RSA PRIVATE KEY-----
Das ist der private Schlüssel. Der muss natürlich geheim bleiben – vorallem weil wir ihn nicht mit einem Passwort verschlüsselt haben!
Gibt es nun auf dem Host raspi3 einen User ‚badman‘ und er bekommt diesen Schlüssel, kann er ihn in der Datei ‚/home/badman/geklauterschluessel.txt‘ speichern, und sich mit SSH als User ‚pi‘ auf dem Host ‚pi.de‘ anmelden.
Und zwar indem er diesen Schlüssel seinem SSH-Programm mitgibt:
ssh pi@pi.de -p 123 -i /home/badman/geklauterschluessel.txt
Das darf natürlich nicht passieren !
Bei ubuntuusers.de ist das ganze nochmal sehr ausführlich erklärt: https://wiki.ubuntuusers.de/SSH/
Schreibe einen Kommentar zu EDV Büro RAAIT Antworten abbrechen