Ajaxterm: utilizzare SSH via web: differenze tra le versioni
Nessun oggetto della modifica |
Wtf (discussione | contributi) Nessun oggetto della modifica |
||
(12 versioni intermedie di 4 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
=Introduzione= | {{Versioni compatibili|Lenny|Squeeze|Wheezy}} | ||
Parecchie reti sono bloccate da firewall molto restrittivi, che permettono connessioni solo attraverso i protocolli < | == Introduzione == | ||
Se vi trovate in questa situazione e state cercando il modo di raggiungere da remoto il vostro server Debian per amministrarlo, il programma < | Parecchie reti sono bloccate da firewall molto restrittivi, che permettono connessioni solo attraverso i protocolli <code>http</code> e <code>https</code>. Magari, per complicare le cose, le impostazioni delle [[blacklist]] contengono solo pochi siti autorizzati.<br> | ||
=Prerequisiti= | Se vi trovate in questa situazione e state cercando il modo di raggiungere da remoto il vostro server Debian per amministrarlo, il programma <code>ajaxterm</code> è quello che fa per voi. <code>ajaxterm</code> è un'interfaccia web based scritta in ajax per connettervi alla porta [[SSH]] del vostro server. | ||
== Prerequisiti == | |||
* un web server Apache: | Affinché <code>ajaxterm</code> funzioni correttamente occorrono: | ||
* un certificato SSL configurato: | * un web server Apache: [[Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5]] | ||
* un server SSH funzionante: | * un certificato SSL configurato: [[Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5]] | ||
=Riconfigurazione dei programmi requisiti= | * un server SSH funzionante: [[OpenSSH: file di configurazione]] | ||
Per testare il funzionamento di < | == Riconfigurazione dei programmi requisiti == | ||
Per testare il funzionamento di <code>ajaxterm</code> in locale installiamo innanzitutto un browser testuale: | |||
<pre> | <pre> | ||
aptitude install lynx | # aptitude install lynx | ||
</pre> | </pre> | ||
Quindi abilitiamo i moduli per il proxy di Apache2: | Quindi abilitiamo i moduli per il proxy di Apache2: | ||
<pre> | <pre> | ||
a2enmod proxy_http | # a2enmod proxy_http | ||
a2enmod proxy | # a2enmod proxy | ||
</pre> | </pre> | ||
Verifichiamo che < | Verifichiamo che <code>openssl</code> sia installato: | ||
<pre> | <pre> | ||
dpkg --list | grep openssl | $ dpkg --list | grep openssl | ||
</pre> | </pre> | ||
e controlliamo che il nostro certificato SSL esista e sia collocato correttamente: | e controlliamo che il nostro certificato SSL esista e sia collocato correttamente: | ||
<pre> | <pre> | ||
ls -la /etc/apache2/ssl | $ ls -la /etc/apache2/ssl | ||
</pre> | </pre> | ||
Nel risultato deve essere elencato anche il file < | Nel risultato deve essere elencato anche il file <code>apache.pem</code>. | ||
=Installazione= | == Installazione == | ||
Basta un solo comando: | Basta un solo comando: | ||
<pre> | <pre> | ||
apt-get install ajaxterm | # apt-get install ajaxterm | ||
</pre> | </pre> | ||
Per testare localmente il corretto funzionamento del pacchetto appena installato, facciamo ricorso ad un browser testuale: | Per testare localmente il corretto funzionamento del pacchetto appena installato, facciamo ricorso ad un browser testuale: | ||
<pre> | <pre> | ||
lynx http://localhost:8022 | $ lynx http://localhost:8022 | ||
</pre> | </pre> | ||
Nell'angolo alto a destra della vostra finestra < | Nell'angolo alto a destra della vostra finestra <code>lynx</code> dovrebbe comparire la dicitura <code>AjaxTerm</code>. Chiudete <code>lynx</code> 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> | ||
nano /etc/ssh/ssh_config | # nano /etc/ssh/ssh_config | ||
</pre> | </pre> | ||
decommentando la voce | decommentando la voce: | ||
<pre> | <pre> | ||
PasswordAuthentication yes | PasswordAuthentication yes | ||
Riga 47: | Riga 48: | ||
Ora creiamo una directory per il nostro sito ajaxterm: | Ora creiamo una directory per il nostro sito ajaxterm: | ||
<pre> | <pre> | ||
mkdir /var/ajaxterm | # mkdir /var/ajaxterm | ||
cd /var/ajaxterm | $ cd /var/ajaxterm | ||
</pre> | </pre> | ||
e proteggiamola con una semplice richiesta di web login e password: | e proteggiamola con una semplice richiesta di web login e password: | ||
<pre> | <pre> | ||
htpasswd -cm /var/ajaxterm/.htpasswd ferdy | # htpasswd -cm /var/ajaxterm/.htpasswd ferdy | ||
</pre> | </pre> | ||
dove al posto di < | dove al posto di <code>ferdy</code> metterete il nome utente che volete utilizzare. Per ragioni di sicurezza è bene che questo '''non''' sia un utente di sistema del vostro server.<br> | ||
Vi verrà chiesto di digitare due volta la password che volete associare a questo utente.<br> | Vi verrà chiesto di digitare due volta la password che volete associare a questo utente.<br> | ||
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: | AjaxTerm di default utilizza per SSH la porta 22. Se, come me, avete modificato la porta SSH nella configurazione del file <code>/etc/ssh/sshd_config</code>, dovete comunicarlo a AjaxTerm. Aprite il suo file di configurazione: | ||
<pre> | <pre> | ||
nano /etc/init.d/ajaxterm | # nano /etc/init.d/ajaxterm | ||
</pre> | </pre> | ||
e modificate la voce | e modificate la voce: | ||
<pre> | <pre> | ||
SERVERPORT=22 | SERVERPORT=22 | ||
</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> | ||
nano /etc/apache2/sites-available/ajaxterm | # nano /etc/apache2/sites-available/ajaxterm | ||
</pre> | </pre> | ||
Nel contenuto del file, che per comodità vi riporto qui sotto, dovrete modificare le voci: | Nel contenuto del file, che per comodità vi riporto qui sotto, dovrete modificare le voci: | ||
* < | * <code>ServerName</code>: al posto di <code>mio.sito.org</code> inserite il FQDN del vostro server | ||
* < | * <code>Redirect entry</code>: al posto di <code>mio.sito.org</code> inserite il FQDN del vostro server | ||
* < | * <code>84433</code>: sostituite a questo numero di porta la porta a cui volete agganciare il vostro server web | ||
* < | * <code>SSLCertificateFile</code>: verificate che il percorso al vostro file .pem sia corretto | ||
* < | * <code>SSLCertificateKeyFile</code>: verificate che il percorso al vostro file .pem sia corretto | ||
* < | * <code>require user ferdy</code>: sostituite <code>ferdy</code> col nome utente che avete scelto prima nel creare il file <code>.htpasswd</code> | ||
Il contenuto del file < | Il contenuto del file <code>'''//etc/apache2/sites-available/ajaxterm'''</code> dovrebbe essere il seguente: | ||
<pre> | <pre> | ||
Listen 8443 | Listen 8443 | ||
Riga 100: | Riga 101: | ||
ProxyRequests Off | ProxyRequests Off | ||
<Proxy *> | <Proxy *> | ||
AuthUserFile / | AuthUserFile /var/ajaxterm/.htpasswd | ||
AuthName EnterPassword | AuthName EnterPassword | ||
AuthType Basic | AuthType Basic | ||
Riga 114: | Riga 115: | ||
Abilitiamo il nuovo vhost: | Abilitiamo il nuovo vhost: | ||
<pre> | <pre> | ||
a2ensite ajaxterm | # a2ensite ajaxterm | ||
</pre> | </pre> | ||
Riavviamo Apache: | Riavviamo Apache: | ||
<pre> | <pre> | ||
/etc/init.d/apache2 reload | # /etc/init.d/apache2 reload | ||
</pre> | </pre> | ||
Riavviamo AjaxTerm: | Riavviamo AjaxTerm: | ||
<pre> | <pre> | ||
/etc/init.d/ajaxterm restart | # /etc/init.d/ajaxterm restart | ||
</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> | ||
https://mio.sito.org:8443 | https://mio.sito.org:8443 | ||
</pre> | </pre> | ||
oppure | oppure: | ||
<pre> | <pre> | ||
https://indirizzo.ip.del.server:8443 | https://indirizzo.ip.del.server:8443 | ||
Riga 135: | 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 | # Per ridimensionare la finestra del terminale di AjaxTerm bisogna modificare due file.<br> | ||
Il primo: | Il primo: | ||
<pre> | <pre> | ||
nano /usr/share/ajaxterm/ajaxterm.py | # nano /usr/share/ajaxterm/ajaxterm.py | ||
</pre> | </pre> | ||
modificando | modificando: | ||
<pre> | <pre> | ||
def __init__(self,width=80,height=24): | def __init__(self,width=80,height=24): | ||
</pre> | </pre> | ||
in | in: | ||
<pre> | <pre> | ||
def __init__(self,width=130,height=48): | def __init__(self,width=130,height=48): | ||
Riga 152: | Riga 154: | ||
Il secondo: | Il secondo: | ||
<pre> | <pre> | ||
nano /usr/share/ajaxterm/ajaxterm.html | # nano /usr/share/ajaxterm/ajaxterm.html | ||
</pre> | </pre> | ||
modificando | modificando: | ||
<pre> | <pre> | ||
t=ajaxterm.Terminal("term",80,25); | t=ajaxterm.Terminal("term",80,25); | ||
</pre> | </pre> | ||
in | in: | ||
<pre> | <pre> | ||
t=ajaxterm.Terminal("term",130,48); | t=ajaxterm.Terminal("term",130,48); | ||
Riga 167: | Riga 169: | ||
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> | <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> | ||
</pre> | </pre> | ||
Quindi ho caricato la mia favicon nella directory < | Quindi ho caricato la mia favicon nella directory <code>/usr/share/ajaxterm/</code>. | ||
Infine ho riavviato AjaxTerm: | Infine ho riavviato AjaxTerm: | ||
<pre> | <pre> | ||
/etc/init.d/ajaxterm restart | # /etc/init.d/ajaxterm restart | ||
</pre> | </pre> | ||
== Per approfondimenti vedi anche: == | |||
[[Installare una SSL VPN con SSL Explorer]] | |||
{{Autori | |||
[[Categoria: | |Autore = [[Utente:Ferdybassi|Ferdybassi]] 18:36, 22 dic 2009 (CET) | ||
[[Categoria: | }} | ||
[[Categoria:SSH server e amministrazione remota]] | |||
[[Categoria:Browser]] |
Versione attuale delle 16:29, 20 set 2015
Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.
Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione. |
Versioni Compatibili Debian 5 "lenny" Debian 6 "squeeze" Debian 7 "wheezy" |
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: Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5
- un certificato SSL configurato: Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5
- un server SSH funzionante: OpenSSH: file di configurazione
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 dimio.sito.org
inserite il FQDN del vostro serverRedirect entry
: al posto dimio.sito.org
inserite il FQDN del vostro server84433
: sostituite a questo numero di porta la porta a cui volete agganciare il vostro server webSSLCertificateFile
: verificate che il percorso al vostro file .pem sia correttoSSLCertificateKeyFile
: verificate che il percorso al vostro file .pem sia correttorequire user ferdy
: sostituiteferdy
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
- 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 file.
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
Guida scritta da: Ferdybassi 18:36, 22 dic 2009 (CET) | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |