Script vom anderen Server ausführen

sbr2d2

Registered User
hi Leute,

ich habe da ein kleines Problem.
Ich möchte von einem Server ausgehend,auf einem anderem Server
ein Script ausführen.
Das ganze soll dann über eine Html-Seite geschehen.

Der Server wo das Script liegt,hat weder apache,php oder sonstiges laufen und soll auch nichts anderes bekommen.
Nur debian etch 4.0.
Der Server von wo das Script gestartet werden soll,läuft mit debian3.1.

Also kurzum:

Server(webserver)>>>html-seite>>verbinden mit anderen server>>script ausführen.

Das ganze soll dazu dienen einen Gameserver neuzustarten.

Hoffe ihr habt einen Ansatz für mich.
Immo scheiterts dadran,das das verbinden per ssh von einem Server zum Anderen nicht geht.

vielen dank im vorraus,
gruss s.b.
 
Um das zu realisieren musst du die Authentifikation via Keys machen.

Ein Quick Howto findest du hier:
 
Hallo.

Ich weiss ob der geringen Beschreibung der eigentlichen Zielsetzung ob das was fuer Dich ist, aber unter bestimmten Voraussetzungen kann man damit zumindest einen HL-Server mitunter neustarten (wenn man das startscript dazu richtig aufruft) :
PHPrcon

Ciao,
Mercy.
 
Das Script auf dem Gameroot läuft.Zumindest wenn ich es per ssh ausführe.

Nun soll es ja von einem anderen webserver ausgeführt werden.

Das mit dem Key schau ich mir nacher an.
Thx schon mal .-)

edit: Das PHPrcon hilft leider nicht,da ich über das Interface was ich haben möchte,ein Server mit verschieden Mods laufen soll.
Dazu ist es erforderlich das diverse Files geändert oder gelöscht werden müssem,was ich mit dem script ja kann.
Fehlt halt nur der Login vom Webserver und das ausführen des scriptes.
 
Last edited by a moderator:
So,nun bin ich seit Tagen am probieren und machen,aber ich bekomms nicht hin.

Weiss jemand wo ich ein script herkriege,welches auf dem Webserver gestartet wird.

Also kurzum das Script was auf den Gameroot per ssh verbindet und eine .sh datei ausführt.

Der Login über AuthentifikationKey ist auch gemacht.

Ich hoffe das jemand eine Antwort hat.

thx schon mal,
s.b.
 
Vielleicht könntest du uns noch ein paar weitere Anhaltspunkte geben. Was hast du bis jetzt gemacht? Was hat funktioniert? Wo hängst du? Gibst vielleicht auch noch Logauszüge von dir für uns?
 
Ok,folgendes kann ich liefern.

Gemacht habe ich bisher 7 Scripte,die einen Gameserver unter verschieden mods
starten lassen.Die laufen perfekt.

Nun will ich vom Webserver aus,diese Scripte starten.

Der Login via AuthentifikationKey auf den Gameroot geht auch.

Es fehlt halt nur noch das Script auf dem Webserver welches ich per php aufrufen möchte,sich verbindet und eins von den 7 scripten ausführt.

Den geschützen Bereich auf dem Webspace hab ich auch schon eingerichtet.

Logauszüge habe ich noch keine,weil ich bislang noch nichts hatte zum testen.

edit: ansonsten hab ich vom webserver bisher versucht,mit allem möglichen was ich gefunden habe zu connecten
 
Last edited by a moderator:
Wenn Du schon eine Server-Anwendung brauchst, warum programmierst Du dann keinen Server?
Es reicht ein kleines Commandozeilen-Script welchen von STDIN ließt und auf STDOUT schreibt. Das ganze mit (x)inetd an einen Port geklemmt und fertig.
Es muß nix anderes machen als Dein eigenes Protokoll ausführen.
Z.B. (> der Client schickt was < der Server schickt was:
Code:
telnet gameserver port
> GEHEIME-SIGNATUR
< OK
> NOCHMAL-WAS-GEHEIMES
< OK
> starte script1
< OK
> QUIT

Einen solchen Dialog kann von beiden Seiten ganz Easy in Perl oder PHP programmiert werden.

huschi.
 
Über PHP soll es ja laufen,bzw der Teil wäre fertig.

Neus Problem.

Seit 2 Tagen läuft das mit dem Pubkey nicht mehr.

Ich hab nun schon alles mögliche versucht.

Keyfile auf dem Server liegt in /home/user/.ssh (Rechte mittlerweile auf 750)
Die Datei "authorized_keys"liegt ebenfalls dadrin(Rechte auch schon auf 750)

Auszüge aus der etc/ssh/sshd_conf:

Protocol 2
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
UsePAM yes

Mit UsePam no gehts auch net,ausser das die Pw-eingabe wegfällt,und der Server gleich trennt.

System client : Debian 3.1 sarge
System host : Debian Etch 4.0

Zu verbinden versuche ich mit:
ssh -i id_rsa userxy@xxx.xxx.xxx.123 -p 45677 -v

Und das sind glaube ich die wichtigen Logauszüge die man braucht.


debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering public key: id_rsa
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Next authentication method: keyboard-interactive
Password:
debug1: Authentications that can continue: publickey,keyboard-interactive
 
Das sind das Debug-Log vom Client. Hast Du auch was vom Server?
Denn der scheint ja die Probleme zu machen.
Und gibts Du beim Client auch die richtige Datei für id_rsa an? Schon mal mit einem absoluten Pfad probiert?

huschi.
 
Das Keyfile ist richtig,bzw wenn es nicht existent wäre,kommt im debuglog
der entsprechende hinweis.
Auch mit dem absoluten pfad das gleiche Ergebnis.

Vom Host kommt aus dem auth.log nur das ich mit falschen Passwort einloggen wollte.

edit: gibt es eine möglichkeit vom ssh-server ein log zu bekommen?
 
Last edited by a moderator:
Hallo.

Mal eine dumme Zwischenfrage...
Ich hab's ja selbst noch nicht gebraucht und auch nicht ausprobiert, aber der einfachste Weg den ich als PHP-Nichtkenner sehe waere doch, ein externes Programm (in dem Falle script) aufzurufen (PHP wird doch sowas wie einen System oder Exec call kennen?) und darin einfach ssh aufzurufen.
Zu dem behaupten meine manpages, es gaebe einen Parameter [command] ueber den am anderen Ende ein Programm ausgefuehrt werden sollte?
ssh [-1246AaCfgkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
[-D port] [-e escape_char] [-F configfile] [-i identity_file] [-L
port:host:hostport] [-l login_name] [-m mac_spec] [-o option]
[-p port] [-R port:host:hostport] [-S ctl] [user@]hostname [command]

Da das ja scheinbar ausscheidet meine Frage, was spricht denn so gegen diesen Weg?

:confused:

Man kann jetzt natuerlich noch ueberlegen, ob das nicht unsicherer ist, als ein proprietaeres Protokoll (Eigenbau), aber nun gut ich frage mich erstmal, warum das ja scheinbar so nicht geht bzw. an welcher Stelle das klemmt.


Ciao,
Mercy.

P.S.: Wenn der key vorher funktionierte und jetzt nicht mehr und "hab nischts jemaht", koennte es sein, dass der key abgelaufen ist?
 
Last edited by a moderator:
Yop,so wird es passieren,es wird nachher über PHP ein Script gestartet,welches ausserhalb vom Webspace liegt.

Ich raff bloss nicht,wieso das mit dem Key nicht mehr geht.
Zum Fall key abgelaufen,ich habe heute Nacht mal einen neuen generiert.

Sprich,auf Client Key generiert,diesen zum host Hochgeladen und die Datei dann
in authorized_keys umbenannt.
chmod auf 600,danach 650 und zum schluss auf 755.
gleicher erfolg,publickey,keyboard-interactive...

Aus den logfiles kommt auch nichts produktives.

hmm...*langsam am ende*...

Werd dann mal weiter googeln,und später nochmal hier reinschauen. :-)
 
Was Du letztendlich gemacht hast ist noch etwas unklar. Leider können auch bei der Key-Erstellung unmengen an kleinen Fehlern passieren.
Fangen wir mal an:
authorized_keys sollte die Rechte 644 haben und dem User gehören. Auch das Verzeichnis ~/.ssh sollte dem User gehören und die Rechte 755 haben.
In die authorized_keys kommt der Inhalt der identity.pub in genau eine Zeile die i.d.R. mit 'ssh-rsa' anfängt.
Der Connect wird vom Client mit der Datei identity. Die Dateinamen können leicht varieren, jenachdem welches Verfahren Du nutzt.
Womit wir beim nächsten Stichwort wären:Achte darauf, daß Du auf dem Client ssh2 nutzt, wenn der Server z.B. nur ssh2-Keys annimmt, etc.

Vieleicht gibst Du uns noch Deine Zeile von ssh-keygen.

huschi.
 
Damit den key erstellt.>> ssh-keygen -t rsa -b 2048

Dann die datei id_rsa.pub per ftp auf den Host geladen mit dem user.

Somit gehört ihm die Datei automatisch.

Dann hab ich 2 Methoden probiert.
1: Die datei einfach umbenannt in authorized_keys

2: mit cat id_rsa.pub >> ~/.ssh/authorized_keys den key eingefügt.

In beiden fällen besteht der key aus einer Zeile und fängt mit ssh-rsa an.

Das mit ssh2 könnt ich doch regeln,indem ich gleich einen key mit

ssh-keygen -t dsa -b 2048 erstelle.Dann müsste es doch gleich auf SSH2 laufen oder?
 
Der Client und der Server einigen sich auf ein Protokoll noch bevor der RSA-Key ins Spiel kommt. Du kannst ein ssh2 forcieren indem Du "ssh -2" tippst.

Was mir noch einfällt:
Es gab mal ne Generation von sshd, die die RSA-Key's für ssh2 in der Datei ~/.ssh/authorized_keys2 gesucht hat.

Und noch die Frage:
Hast Du für den Key eine Passphrase eingegeben oder leer gelassen?

huschi.
 
Nein,die Passphrase habe ich leer gelassen,weil ich keine möglichkeit habe,diese
in dem Script mit zu übergeben.
Dann hätte ich das auch gleich über Name-Passwort machen können.

Werd das mal testen.

edit:
Was es authorized_keys2 angeht,müsste das doch in sshd_conf geregelt sein.

Aber das werd ich dann versuchen,irgendwo muss ja der Hund begraben sein.
 
Last edited by a moderator:
Ich habe das nun mal alles getestet.Ohne erfolg.

Ich bring mal den kompletten Debug-log vom Client.
OpenSSH_3.8.1p1 Debian-8.sarge.4, OpenSSL 0.9.7e 25 Oct 2004
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to 66.777.888.999 [66.777.888.999] port 55667.
debug1: Connection established.
debug1: identity file /home/userbla/.ssh/id_dsa type 2
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.3p2 Debian-9
debug1: match: OpenSSH_4.3p2 Debian-9 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_3.8.1p1 Debian-8.sarge.4
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host '66.777.888.999' is known and matches the RSA host key.
debug1: Found key in /home/userbla/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering public key: /home/userbla/.ssh/id_dsa
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Next authentication method: keyboard-interactive

userbla@blasystem:~/.ssh$ ssh -2 -i /home/userbla/.ssh/id_dsa zieluser@66.777.888.999 -p 55667 -v

Wer hat eigentlich Computer erfunden:confused:
 
Problem gelöst!!!!!

Kleiner flüchtigkeitsfehler.

Nachdem das mit dem Login klappte,und alle Scripte liefen,habe ich in der etc/passwd das home ein wenig geändert.

Drauf gekommen bin ich,als ich das ganze rückwärts versuchen wollte.
Also connect von Host zu Client.Im Ordner home/user/.ssh gabs dann keine Keyfile.

Über suchen bin ich dann drauf gekommen.

Vielen dank für eure hilfe :-)

gruss s.b.
 
Hi nochmal,

ich schreib mal hier weiter,weil es immer noch das gleiche Thema ist.

Soweit läuft alles wunderbar,bzw habe ich den server noch ein wenig an das Script anpassen müssen.

Bleibt nur noch eine Frage.

Wenn ichdas Script aufrufe(liegt in var/www/user/html/gesicherter ordner),
wird das im Ordner var/www/empty/ aufgerufen.

Warum ist das so,bzw hab ich noch nicht gefunden wo ich das änder?
 
Back
Top