Programme auf anderen Servern mit SSH ausführen

01.07.2009 | Kategorie: HowTo, Top Artikel

Im Server-Bereich hat man häufiger das Problem, dass man von Server A einen Befehl auf Server B ausführen möchte, um das Ergebnis auf Server A weiterverarbeiten zu können.
SSH-Verbindungen bieten sich dazu an, eine gesicherte Verbindung zwischen diesen Servern herzustellen.

ssh -l user serverB ‘ls -als’

Dieses Befehl würde auf ’serverB’ das Kommando ‘ls -als’ ausführen.

Aus Sicherheitsgründen möchte man jedoch oft, dass nur ein einziges Kommando ausgeführt werden kann. Denn das Kommando ‘\rm -R *’ wäre Fatal.

OpenSSH bietet die Möglichkeit zuätzlich zu den autorisierten Schlüsseln in der Datei authorized_keys auch noch eine Befehl vorzugeben, der ausgeführt werden soll. Der Befehl wird in diesem Fall ausgeführt und die SSH-Verbindung wieder geschlossen.

command=’ls -als’ ssh-dss AAAA….KEY

Schade an dieser Möglichkeit ist nur, dass man auf diesem Weg keine Parameter übergeben kann. Über ein Perl-Script z.B. kann man aber den eigentlich auszuführenden Befehl, welcher auf Grund der command-Anweisung in der authorized_keys nun nicht mehr ausgeführt wird, auslesen.

ssh -l user serverB “parameter”

Obwohl der Server nun nur den in der authorized_keys angegebenen Befehl ausführt (Dieser Befehl kann auch das Ausführen eines Perl-Scripts sein), hat man nun die Möglichkeit Parameter zu übergeben. ‘parameter’ wird nämlich in der Umgebungsvariable ‘$ENV{SSH_ORIGINAL_COMMAND}’ gespeichert.
Ein Perl-Script kann den dort übergebenen Parameter auslesen und entsprechend weiterverarbeiten.

Tags: ,

Kommentieren