Ajaxterm: utilizzare SSH via web: differenze tra le versioni
(Nuova pagina: =Introduzione= Parecchie reti sono bloccate da firewall molto restrittivi, che permettono connessioni solo attraverso i protocolli <tt>http</tt> e <tt>https</tt>. Magari, per complicar...) |
Nessun oggetto della modifica |
||
Riga 175: | Riga 175: | ||
<br> | <br> | ||
--[[Utente:Ferdybassi|Ferdybassi]] 18:36, 22 dic 2009 (CET) | --[[Utente:Ferdybassi|Ferdybassi]] 18:36, 22 dic 2009 (CET) | ||
---- | |||
[[Categoria:Server]] | |||
[[Categoria:Networking]] | |||
[[Categoria:Sistema]] |
Versione delle 14:48, 31 dic 2009
Introduzione
Parecchie reti sono bloccate da firewall molto restrittivi, che permettono connessioni solo attraverso i protocolli http e https. Magari, per complicare le cose, le impostazioni delle blacklist contengono solo pochi siti autorizzati.
Se vi trovate in questa situazione e state cercando il modo di raggiungere da remoto il vostro server Debian per amministrarlo, il programma ajaxterm è quello che fa per voi. ajaxterm è un'interfaccia web based scritta in ajax per connettervi alla porta SSH del vostro server.
Prerequisiti
Affinchè ajaxterm funzioni correttamente occorrono:
- un web server Apache: http://guide.debianizzati.org/index.php/Installare_un_ambiente_LAMP:_Linux%2C_Apache2%2C_SSL%2C_MySQL%2C_PHP5
- un certificato SSL configurato: http://guide.debianizzati.org/index.php/Installare_un_ambiente_LAMP:_Linux%2C_Apache2%2C_SSL%2C_MySQL%2C_PHP5
- un server SSH funzionante: http://guide.debianizzati.org/index.php/OpenSSH:_configurazione_di_base
Riconfigurazione dei programmi requisiti
Per testare il funzionamento di ajaxterm in locale installiamo innanzitutto un browser testuale:
aptitude install lynx
Quindi abilitiamo i moduli per il proxy di Apache2:
a2enmod proxy_http a2enmod proxy
Verifichiamo che openssl sia installato:
dpkg --list | grep openssl
e controlliamo che il nostro certificato SSL esista e sia collocato correttamente:
ls -la /etc/apache2/ssl
Nel risultato deve essere elencato anche il file apache.pem.
Installazione
Basta un solo comando:
apt-get install ajaxterm
Per testare localmente il corretto funzionamento del pacchetto appena installato, facciamo ricorso ad un browser testuale:
lynx http://localhost:8022
Nell'angolo alto a destra della vostra finestra lynx dovrebbe comparire la dicitura AjaxTerm. Chiudete lynx e proseguiamo.
Protezione dell'accesso a AjaxTerm
Modifichiamo innanzitutto la configurazione di OpenSSH:
nano /etc/ssh/ssh_config
decommentando la voce
PasswordAuthentication yes
Ora creiamo una directory per il nostro sito ajaxterm:
mkdir /var/ajaxterm cd /var/ajaxterm
e proteggiamola con una semplice richiesta di web login e password:
htpasswd -cm /var/ajaxterm/.htpasswd ferdy
dove al posto di ferdy metterete il nome utente che volete utilizzare. Per ragioni di sicurezza è bene che questo non sia un utente di sistema del vostro server.
Vi verrà chiesto di digitare due volta la password che volete associare a questo utente.
AjaxTerm di default utilizza per SSH la porta 22. Se, come me, avete modificato la porta SSH nella configurazione del file /etc/ssh/sshd_config, dovete comunicarlo a AjaxTerm. Aprite il suo file di configurazione:
nano /etc/init.d/ajaxterm
e modificate la voce
SERVERPORT=22
come vi occorre.
Configurazione di Apache2
Ora andremo a creare un nuovo file vhost per Apache2:
nano /etc/apache2/sites-available/ajaxterm
Nel contenuto del file, che per comodità vi riporto qui sotto, dovrete modificare le voci:
- ServerName: al posto di mio.sito.org inserite il FQDN del vostro server
- Redirect entry: al posto di mio.sito.org inserite il FQDN del vostro server
- 84433: sostituite a questo numero di porta la porta a cui volete agganciare il vostro server web
- SSLCertificateFile: verificate che il percorso al vostro file .pem sia corretto
- SSLCertificateKeyFile: verificate che il percorso al vostro file .pem sia corretto
- require user ferdy: sostituite ferdy col nome utente che avete scelto prima nel creare il file .htpasswd
Il contenuto del file //etc/apache2/sites-available/ajaxterm dovrebbe essere il seguente:
Listen 8443 <VirtualHost *:80> ServerName mio.sito.org Redirect 301 / https://ajaxterm.mio.sito.org:8443 CustomLog /var/log/apache2/access.log combined ErrorLog /var/log/apache2/error.log </VirtualHost> <VirtualHost *:8443> ServerName mio.sito.org HostnameLookups Double CustomLog /var/log/apache2/access.log combined env=!dontlog SetEnvIf Request_URI "^/u" dontlog ErrorLog /var/log/apache2/error.log Loglevel warn SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.pem ProxyRequests Off <Proxy *> AuthUserFile /srv/ajaxterm/.htpasswd AuthName EnterPassword AuthType Basic require user ferdy Order Deny,allow Allow from all </Proxy> ProxyPass / http://localhost:8022/ ProxyPassReverse / http://localhost:8022/ </VirtualHost>
Abilitiamo il nuovo vhost:
a2ensite ajaxterm
Riavviamo Apache:
/etc/init.d/apache2 reload
Riavviamo AjaxTerm:
/etc/init.d/ajaxterm restart
Test di funzionamento
Colleghiamoci ora, da un PC della rete, all'indirizzo:
https://mio.sito.org:8443
oppure
https://indirizzo.ip.del.server:8443
accettiamo il certificato e inseriamo le credenziali di accesso.
A questo punto possiamo fare login dal terminale di AjaxTerm come un normale login SSH.
Note Conclusive
- Per chiudere correttamente AjaxTerm non è sufficiente chiudere la pagina del browser, ma è necessario prima effettuare il logout dalla sessione AjaxTerm/SSH. In questo modo si evita lo spreco di risorse del sistema.
- Per ridimensionare la finestra del terminale di AjaxTerm bisogna modificare due files.
Il primo:
nano /usr/share/ajaxterm/ajaxterm.py
modificando
def __init__(self,width=80,height=24):
in
def __init__(self,width=130,height=48):
Il secondo:
nano /usr/share/ajaxterm/ajaxterm.html
modificando
t=ajaxterm.Terminal("term",80,25);
in
t=ajaxterm.Terminal("term",130,48);
Già che c'ero, a quest'ultimo file ho apportato altre due modifiche, cambiando il titolo della pagina e aggiungendo due righe appena sotto il tag <META>:
<link rel="icon" href="favicon.ico" type="image/x-icon" /> <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
Quindi ho caricato la mia favicon nella directory /usr/share/ajaxterm/. Infine ho riavviato AjaxTerm:
/etc/init.d/ajaxterm restart
--Ferdybassi 18:36, 22 dic 2009 (CET)