Obrir el SSH des d'una pàgina web

De Wikijoan
Dreceres ràpides: navegació, cerca

D'acord que tenir el SSH sempre obert és una mala política. Una manera de solucionar-ho en un servidor on estigui instal.lat un Apache i faci de servidor web és executar una pàgina PHP que executar un shell script que ens obre el servidor SSH. A més a més podria haver-hi un cron que faci que aquest servidor s'apagui automàticament al cap d'una hora.

Primer anem a executar un script senzill: prova_script.sh

ls -la > prova/hola.txt

Hem hagut de crear la carpeta prova amb permisos d'escriptura per a tothom. Aquí he de saber un script php quin usuari és el que l'executa.

El script php queda de la forma: prova_script.php:

<?php
shell_exec("./prova_script.sh");
echo "hola";
?>

abans però hem hagut de donar permís d'escriptura en aquesta carpeta:

$ chmod a+w prova

i efectivament funciona:

http://www.prova.com/prova_script.php
http://www.prova.com/prova/hola.txt

veiem el llistat del directori

http://foro.noticias3d.com/vbulletin/showthread.php?t=163587


Volem executar la comana

sudo /etc/init.d/ssh start

des de PHP

Hem de donar permisos a l'usuari www-data, que és el que executa els scripts PHP de l'Apache:

1r $ sudo passwd www-data (i posem una clau a l'usuari www-data)

2n $ apt-get install sudo (a Ubuntu ja està instal.lat)

3r tenim dues opcions:

# User privilege specification
root    ALL=(ALL) ALL
www-data        ALL=(ALL) ALL

Ara el script prova_script.php queda de la següent manera:

 exec("echo **** | /usr/bin/sudo -u root -s /etc/init.d/ssh start");
 exec("sudo -K"); // !IMPORTANTE! Destruim la sessió

on **** és el password de l'usuari www-data

Tot això funciona, comprovat. Ja puc obrir una sessió SSH. Lo correcta és quan acabi aquesta sessió SSH tancar manualment el servidor SSH, o bé un script que s'executi per exemple cada tres hores i que tanqui el servei SSH.

Amb aquesta tècnica, no cal dir-ho, es pot executar tasques administratives des de PHP, i es podria fer un webmin.

Tancar el SSH automàticament

La manera més senzilla de fer-ho és ficar en cl crontab la següent línia

50 * * * * * * * * root /etc/init.d/ssh stop

En aquest cas s'executa cada hora en el minut 50. Així sempre m'asseguro que el SSH està tancat. Per obrir-lo, ho faré a través de la web.

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
IES Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines