Ajaxterm: utilizzare SSH via web: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
(corretta gerarchia titoli)
Riga 1: Riga 1:
{{Versioni compatibili|Debian Lenny 5.0<br/>Debian Squeeze 6.0<br/>Debian Sid|}}
{{Versioni compatibili|Debian Lenny 5.0<br/>Debian Squeeze 6.0<br/>Debian Sid|}}
=Introduzione=
== 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 complicare le cose, le impostazioni delle blacklist contengono solo pochi siti autorizzati.<br>
Parecchie reti sono bloccate da firewall molto restrittivi, che permettono connessioni solo attraverso i protocolli <tt>http</tt> e <tt>https</tt>. Magari, per complicare le cose, le impostazioni delle blacklist contengono solo pochi siti autorizzati.<br>
Se vi trovate in questa situazione e state cercando il modo di raggiungere da remoto il vostro server Debian per amministrarlo, il programma <tt>ajaxterm</tt> è quello che fa per voi. <tt>ajaxterm</tt> è un'interfaccia web based scritta in ajax per connettervi  alla porta SSH del vostro server.
Se vi trovate in questa situazione e state cercando il modo di raggiungere da remoto il vostro server Debian per amministrarlo, il programma <tt>ajaxterm</tt> è quello che fa per voi. <tt>ajaxterm</tt> è un'interfaccia web based scritta in ajax per connettervi  alla porta SSH del vostro server.
=Prerequisiti=
== Prerequisiti ==
Affinchè <tt>ajaxterm</tt> funzioni correttamente occorrono:
Affinchè <tt>ajaxterm</tt> 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 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 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
* un server SSH funzionante: http://guide.debianizzati.org/index.php/OpenSSH:_configurazione_di_base
=Riconfigurazione dei programmi requisiti=
== Riconfigurazione dei programmi requisiti ==
Per testare il funzionamento di <tt>ajaxterm</tt> in locale installiamo innanzitutto un browser testuale:
Per testare il funzionamento di <tt>ajaxterm</tt> in locale installiamo innanzitutto un browser testuale:
<pre>
<pre>
Riga 27: Riga 27:
</pre>
</pre>
Nel risultato deve essere elencato anche il file <tt>apache.pem</tt>.
Nel risultato deve essere elencato anche il file <tt>apache.pem</tt>.
=Installazione=
== Installazione ==
Basta un solo comando:
Basta un solo comando:
<pre>
<pre>
Riga 37: Riga 37:
</pre>
</pre>
Nell'angolo alto a destra della vostra finestra <tt>lynx</tt> dovrebbe comparire la dicitura <tt>AjaxTerm</tt>. Chiudete <tt>lynx</tt> e proseguiamo.
Nell'angolo alto a destra della vostra finestra <tt>lynx</tt> dovrebbe comparire la dicitura <tt>AjaxTerm</tt>. Chiudete <tt>lynx</tt> e proseguiamo.
=Protezione dell'accesso a AjaxTerm=
== Protezione dell'accesso a AjaxTerm ==
Modifichiamo innanzitutto la configurazione di OpenSSH:
Modifichiamo innanzitutto la configurazione di OpenSSH:
<pre>
<pre>
Riga 66: Riga 66:
</pre>
</pre>
come vi occorre.
come vi occorre.
=Configurazione di Apache2=
== Configurazione di Apache2 ==
Ora andremo a creare un nuovo file vhost per Apache2:
Ora andremo a creare un nuovo file vhost per Apache2:
<pre>
<pre>
Riga 126: Riga 126:
</pre>
</pre>


=Test di funzionamento=
== Test di funzionamento ==
Colleghiamoci ora, da un PC della rete, all'indirizzo:
Colleghiamoci ora, da un PC della rete, all'indirizzo:
<pre>
<pre>
Riga 137: Riga 137:
accettiamo il certificato e inseriamo le credenziali di accesso.<br>
accettiamo il certificato e inseriamo le credenziali di accesso.<br>
A questo punto possiamo fare login dal terminale di AjaxTerm come un normale login SSH.
A questo punto possiamo fare login dal terminale di AjaxTerm come un normale login SSH.
=Note Conclusive=
== 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 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.<br>
# Per ridimensionare la finestra del terminale di AjaxTerm bisogna modificare due files.<br>
Riga 174: Riga 174:
/etc/init.d/ajaxterm restart
/etc/init.d/ajaxterm restart
</pre>
</pre>
=Per approfondimenti vedi anche:=
== Per approfondimenti vedi anche: ==
[[Installare una SSL VPN con SSL Explorer]]
[[Installare una SSL VPN con SSL Explorer]]
<br>
<br>

Versione delle 15:08, 7 feb 2010

Debian-swirl.png Versioni Compatibili

ERRORE: valore non valido ( Debian Lenny 5.0
Debian Squeeze 6.0
Debian Sid )! Vedi qui.

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:

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 /var/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

  1. 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.
  2. 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

Per approfondimenti vedi anche:

Installare una SSL VPN con SSL Explorer

--Ferdybassi 18:36, 22 dic 2009 (CET)