Mehrmalige Passworteingabe in Bash-Script vermeiden

  • Ersteller Ersteller Ochse
  • Erstellt am Erstellt am
Soll ich jetzt echt ein Binary für genau das selbe Beispiel nehmen? Macht doch überhaupt keinen Unterschied.

Na gut...

ochsederunglaeubige.png


Muss morgen leider arbeiten. Wenn du mir immer noch nicht glaubst, dann lass es halt :(
 
Zuletzt bearbeitet:
Es ist doch trivial, dass auf diese Weise das Passwort gesehen wird. Aber bei mir steht "zzzzzzzzzzzzz" anstelle des tatsächlichen Passwortes, wenn ich mein 3-zeiliges Script aufrufe.

Glaube das Problem ist, dass du Beispiele kreierst, die nicht mit meiner Situation vergleichbar sind.

PS. Tut mir leid, dass du arbeiten musst.

xone92 schrieb:
heute Nacht hatte ich echt überlegt ob ich hier noch was antworte.

Vielleicht traust du dich ja diese Nacht? Bin für jede weitere Entropiequelle dankbar ;) .
Frag mich, was denn nun stimmt.
 
Zuletzt bearbeitet:
Hei,
Habt ihr euch mal die dazugehörige Man-Page angeschaut?

»The -p option should be considered the least secure of all of sshpass's options. All system users can see the password in the
command line with a simple "ps" command. Sshpass makes a minimal attempt to hide the password, but such attempts are doomed to create race conditions without actually solving the problem. Users of sshpass are encouraged to use one of the other password
passing techniques, which are all more secure.

In particular, people writing programs that are meant to communicate the password programatically are encouraged to use an anonymous pipe and pass the pipe's reading end to sshpass using the -d option.«

Also wie wäre es mit einer pipe?
Probiere mal bitte aus ob das geht:
Code:
  sshpass -d3 "wasauchimmer" 3<<<"$passwd"
Das legt allerdings sehr kurzfristig eine temporäre Datei in /tmp an, die nur der Nutzer (und natürlich root) lesen kann.

Die Probleme der Methoden:
Kommandozeilenargument ‣ für den Bruchteil einer Sekunde können alle Benutzer das Passwort im Klartext in der Prozessliste sehen
Umgebungsvariable ‣ kann nur der Nutzer, dafür aber dauerhaft auslesen (obwohl das sshpass auch ändern könnte?)
Pipe ‣ für den Bruchteil einer Sekunde kann nur der Nutzer das Passwort aus einer Datei mit zufälligem Namen in /tmp lesen

Übrigens: Zur Umgebungsvariable, überprüfe mal ob die auf dem ssh-Server sichtbar ist, ich glaube mich zu erinnern, dass ssh standardmäßig Umgebungsvariablen überträgt, kann man aber und sollte man hier auf jeden Fall abstellen.

Es gibt also gute Gründe für sshkeys ;-)
 
Ja, die man page ist mir bekannt.

In einem andere Forum hab ich vorhin auch gelesen, sshpass -p verstecke das Passwort, was bei mir auch funktioniert, nur sei es für einen Sekundenbruchteil lesbar (Also im Prinzip das was du geschrieben hast).

Wie du schon gesagt hast, mit sshpass -e ist es die ganze Zeit im Klartext für Prozesse des Benutzers, der ssh ausführte, lesbar. Ich wüsste nicht wie ich das ändern könnte.

Ich werd nachher nochmal die pipe Option testen. Scheint ja bis jetzt die sicherste Variante zu sein. Mein erster Versuch sie zu benutzen, scheitere mit irgendeiner Zugriffsverletzung. Hatte es dann aufgegeben.

Übrigens: Zur Umgebungsvariable, überprüfe mal ob die auf dem ssh-Server sichtbar ist.
Mach ich.
 
Zuletzt bearbeitet:
Mal abgesehen von der ganzen Umgebungsvariablen-Diskussion: Arbeiten alle scp-Kommandos mit dem gleichen Server? Falls ja, wie wärs mit connection multiplexing? Für die erste Verbindung wird das Passwort benötigt, alle folgenden Verbindungen laufen dann ohne weitere authentication sofort über die erste, weiterhin bestehende, die man erst kappt wenn alle Aufgaben fertig sind.

Siehe z.B. http://en.wikibooks.org/wiki/OpenSSH/Cookbook/Multiplexing#Setting_Up_Multiplexing
 
Klingt erst einmal sehr gut. Ja, es ist immer der gleiche Server. Muss ich mir mal ansehen.
 
Seinen öffentlichen Schlüssel hochzuladen wäre auch noch eine Möglichkeit, dieses Passwortproblem aufzulösen.
 
Es kann aber sein, dass Public-Key Authentication deaktiviert ist. Bei einem unserer Uni-Server, der öffentlich erreichbar ist, ist das genau der Fall. Laut Admin aus Sicherheitsgründen, da manche Leute wohl private-Keys ohne Passphrase öffentlich rumverteilt haben. Jetzt schreiben sie halt ihre PWs Plaintext in ihre Skripte.

Zu diesem hier:
Wie du schon gesagt hast, mit sshpass -e ist es die ganze Zeit im Klartext für Prozesse des Benutzers, der ssh ausführte, lesbar. Ich wüsste nicht wie ich das ändern könnte.
Darüber brauchst du dir echt keine Gedanken machen. Wenn du dem eigenen User nicht traust, brauchst du erst gar nicht anfangen. Der User könnte z.B. einfach das Skript ändern und das Passwort in eine Datei schrieben.
 
Zurück
Oben