r4pt0r hat geschrieben: 09.01.2018 15:29:30
Passwörter im Klartext in scripten anzugeben ist grundsätzlich eine schlechte Idee - benutze ssh-keys für die Authentifizierung.
Zu testzwecken kann ggf
sshpass verwendet werden.
Man kann Passwörter durchaus sicher in Shellscripten übergeben. Nur sollte man diese logischerweise nicht im Klartext in das Shellscript schreiben.
Beispiel:
viewtopic.php?f=37&t=165374&p=1133574&hilit=#p1133574
Somit könnte das so aussehen:
Code: Alles auswählen
#!/bin/bash
PASS="$(< /root/ssh-password)"
sshpass -f <(echo "$PASS") ssh user@host
Somit wäre das Passwort nur für Root lesbar, und ab Scriptstart nicht einfach so auszulesen.
Man müsste hier schon ab Scriptstart mit gdb oder strace loggen, und wenn das möglich ist für ein Fremdprogramm, dann stellt das die Systemsicherheit schon prinzipiell in Frage. Da braucht man dann auch nicht mehr mit Public-Keys arbeiten, die sind dann ebenfalls kompromittiert.
r4pt0r hat geschrieben: 09.01.2018 15:29:30
Und noch eine allgemeine Anmerkung: für scripte sollte man die bourne shell verwenden, nicht bash! Die default shell für cron auf sämtlichen linux- und UNIX-systemen ist sh und diese ist in POSIX standardisiert. bash ist oft sogar nichtmal zwischen verschiedenen Linux-varianten 100% kompatibel, portabilität ist somit nicht gegeben.
Nur weil in einer Crontab aus historischen Gründen /bin/sh steht, ist das nicht die Default-Shell, sondern nur jene Shell die historisch noch für Systemscripte genutzt wird. Auf so gut wie jeder modernen Linux-Distribution ist die GNU/Bash die Standard-Usershell. Ich hatte noch keine Distribution, in der irgendein Bashscript nicht anstandslos lief, ausser unter BSD, macOS und weiterem. Genau genommen nutzt einem diese vielfach angepriesene Kompatibilität garnichts, wenn man nur eine einheitliche Shell hat, aber die Userspace-Programme sich teils erheblich unterscheiden. Denn die GNU/Coreutils mal als Beispiel genommen, sind nicht automatisch mit BSD, macOS und Co. kompatibel, da hier jede Plattform ihre Eigenheiten hat. Von daher ist das eine unsägliche Arbeit, ein Shellscript kompatibel zu allen Plattformen zu machen, wo man besser Python nimmt oder direkt C, C++ und Vergleichbares. Und persönlich muss ich dazu sagen, dass der Posix-Standard verdammt alt ist, und heutige Belange garnicht auf dem Schirm hatte. Genau darum existieren doch erst Shells wie Zsh oder die Bash, um modernen Ansprüchen gerecht zu werden.