Anem a suposar que per algun motiu no podem accedir al nostre servidor amb un terminal, perquè potser, estem en caminant pel carrer i només tenim el nostre telèfon mòbil a sobre, i com no som frikis ni res, no hem instal·lat cap aplicació d'aquest tipus .
Què fem llavors? Doncs res, no podem fer res fins que arribem a la casa o al la feina, accedim al nostre servidor i instal·lem Shellinabox. Però que és això, es menja?
Shellinabox
Shellinabox implements un servidor web que pot exportar eines de línia d'ordres a emulador de terminal basat en la web. aquest emulador accessible des de qualsevol navegador que suporti JavaScript i CSS y no requereix cap tipus de connectar addicional per a funcionar.
Tot i que el projecte original va ser descontinuado, hi ha un fork a Github que ens permet instal·lar-lo si no el tenim en els repositoris. En el cas d'Ubuntu 14.04 està, així que només hem d'obrir un terminal i posar:
$ sudo apt install shellinabox openssl ca-certificates
En el cas dels últims dos paquets és per si no els tenim ja instal·lats. I un cop fet això doncs ja podem accedir al nostre terminal al web posant al navegador:
http://la_ip_o_nombre_del_servidor:4200
Utilitza Shellinabox pel port 80
Com poden apreciar, per defecte Shellinabox fa servir el port 4200 i és possible que no puguem accedir-hi si el nostre proveïdor de serveis ho té bloquejat. Podem usar una variant que és poc segura però funciona, que des d' Shellinabox pel port 80, Encara que després mostraré com fer servir el 443 si ho tenim disponible.
El que farem serà accedir a Shellinabox a l'posar en el nostre navegador:
http://la_ip_o_nombre_del_servidor/terminal
Per això el primer que fem és instal·lar Nginx:
$ sudo apt install nginx
Ara creem el fitxer / Etc / nginx / sites-enabled / shellinabox i li posem a dins:
server {proxy_set_header Host $ http_host; proxy_set_header X-Forwarded-Host $ http_host; proxy_set_header X-Real-IP $ REMOTE_ADDR; proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; location / terminal / {proxy_pass http: // localhost: 4200 /; }}
Editem el fitxer / Etc / default / shellinabox i posem a la fin:
SHELLINABOX_ARGS="--localhost-only --disable-ssl"
reiniciem Nginx y Shellinabox:
$ Sudo /etc/init.d/shellinabox restart $ sudo /etc/init.d/nginx restart
I llest !!
Utilitza Shellinabox pel port 443
Aquest procés és una mica més molest, perquè hem de crear els nostres certificats SSL. Per a això farem el següent:
Primer vam instal·lar OpenSSL:
$ Sudo apt-get install openssl
Creem una clau privada:
openssl genrsa -out server.key 2024
Creem la base de l'certificat, on posarem una sèrie de dades:
openssl req -new -key server.key -out server.csr
Les dades que omplirem seran:
- Country Name (2 letter code): Codi de país en format ISO de dues lletres (ex: ES, US, CU, MX ..).
- State or Province Name (full name): Estat o província (ex: Florida).
- Locality Name: Localitat o ciutat (ex: Miami).
- Nom de l'organització: Nombre de la organización, (ej: DesdeLinux).
- Organizational Unit Name: Sector de l'organització (ex: Blocs).
- Nom comú: Nombre del dominio ó FQDN. Es importante conocer que hay una diferencia entre blog.desdelinux.net y desdelinux.net. Debes registrar el certificado para uno, o para el otro.
- Correu electrònic: Adreça de correu de contacte.
- A challenge password: En blanc.
- An optional company name: En blanc.
Ara generem el certificat SSL, que ens prendrà les dades que vam posar:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Copiem els certificats a la carpeta SSL dins de / etc:
$ Sudo cp server.crt /etc/ssl/certs/ssl.crt $ sudo cp server.key /etc/ssl/certs/ssl.key
Tornem a editar el fitxer el fitxer / Etc / default / shellinabox i canviem el que havíem posat, posant a la fi:
SHELLINABOX_ARGS="--no-beep"
Ara editem el fitxer / Etc / nginx / sites-enabled / shellinabox i li posem a dins:
server {listen 80; return 301 https: // $ host $ REQUEST_URI; } Server {listen 443; SERVER_NAME myvps.com; ssl_certificate /etc/ssl/certs/ssl.crt; ssl_certificate_key /etc/ssl/certs/ssl.key; ssl on; ssl_session_cache builtin: 1000 shared: SSL: 10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:! aNULL:! eNULL:! EXPORT:! CAMELLIA:! DES:! MD5:! PSK:! RC4; ssl_prefer_server_ciphers on; access_log /var/log/nginx/shellinabox.access.log; location / terminal {proxy_set_header Host $ host; proxy_set_header X-Real-IP $ REMOTE_ADDR; proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $ scheme; # Fix the "It appears that your reverse proxy set up is broken" error. Proxy_pass http: // localhost: 4200 /; proxy_read_timeout 90; proxy_redirect http: // localhost: 4200 https://myvps.com/terminal/;} }
Reiniciem els serveis:
$ Sudo /etc/init.d/shellinabox restart $ sudo /etc/init.d/nginx restart
i accedim a
http://la_ip_o_nombre_del_servidor/terminal
la qual cosa ha redireccionarnos a:
https://la_ip_o_nombre_del_servidor/terminal
I això és tot.
em va recordar al que surt a les sèries de CSI
Un post d'allò més interessant; mai havia sentit d'aquesta utilitat i la veritat és que és d'allò més curiosa i útil ... He de suposar que a l'igual que s'ha aplicat aquest concepte a Ngix, també es podrà aplicar a Apache, cert?
Em recorda a com funciona Butterfly, sobretot a l'usar la terminal des del navegador. És clar sí, no amb tanta complexitat com el que mostren aquí 🙂
«Anem a suposar que per algun motiu no podem accedir al nostre servidor amb un terminal, perquè potser, estem en caminant pel carrer i només tenim el nostre telèfon mòbil a sobre, i com no som frikis ni res, no hem instal·lat cap aplicació d'aquest tipus. »
Com anem a voler entrar al nostre servidor si no som frikis? jajajjaja
Em sembla bastant més ràpid utilitzar una app de ssh d'utilitzar un navegador i evites instal·lar programari al servidor, però no deixa de ser una opció interessant.
Avantatge quan estàs en un lloc amb purs Windows.
«Avantatge quan estàs en un lloc amb purs Windows.»
entoses .................. putty o Kitty.
exelente men aquesta super gràcies per l'aportació