Henryk Plötz: wildcard für "neuer als" gesucht ...

Beitrag lesen

Moin,

Da für jeden der 15 Server das Paßwort eingegeben werden muß (da führt kein Weg dran vorbei)

Doch führt. Gegen public key auf den Servern und private key (mit Passphrase) auf deinem lokalen Rechner/Laptop spricht sicherheitstechnisch genau gar nichts, es ist Passwortauthentisierung sogar vorzuziehen. Hier nochmal in Farbe und Bunt: http://www.unixwiz.net/techtips/ssh-agent-forwarding.html

Wenn man allerdings unbedingt darauf besteht dem Benutzer möglichst viele Steine in den Weg zu legen damit der auch ja kreative Wege findet diese zu umgehen und dabei die Sicherheit zu schwächen ... bittesehr, auch das ist möglich. Mit Trick 17, 18 und 19 zusammen kann man SSH dazu bringen das Passwort aus einem Skript zu akzeptieren, damit man es nicht selbst eingeben muss (ursprünglich habe ich das entwickelt um skriptgesteuert auf einen abgespeckten dropbear zu kommen der kein pubkey-auth kann):
Der Schlüssel ist die Umgebungsvariable SSH_ASKPASS, damit kann man ein Kommando angeben welches ssh benutzen soll um das Passwort einzuholen, falls es kein tty hat. Der erste Schritt ist also einfach: Erstelle ein Skript welches dein Passwort ausgibt:

  
#!/bin/bash  
echo passwort  

Eigentlich[tm] solltest du jetzt mit SSH_ASKPASS=/pfad/zu/deinem/skript ssh benutzer@host (bash-syntax) ssh oder scp machen können, ohne ein Passwort einzugeben. Die Realität ist leider komplizierter. Ssh verwendet SSH_ASKPASS offenbar wirklich nur, wenn kein TTY aber dafür ein X (DISPLAY ist gesetzt) zur Verfügung steht. Mir ist keine wirklich schöne Lösung eingefallen, um dem ssh das TTY wegzunehmen, aber dafür eine etwas weniger schöne: Undzwar kann man, wenn man sich mit ssh irgendwo einloggt sich aussuchen ob ein TTY alloziiert werden soll oder nicht. Also machst du einfach ssh auf deine lokale Kiste (da wirst du pubkey-auth ja wohl noch hinkriegen) mit dem Parameter -T und rufst dann obiges Kommando auf (DISPLAY setzen nicht vergessen). Ungefähr so:
ssh -T localhost "/bin/bash -c 'DISPLAY=foo SSH_ASKPASS=/pfad/zu/deinem/skript ssh benutzer@host'"

Getestet und für hässlich befunden, geht aber.

--
Henryk Plötz
Grüße aus Berlin
~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~