Tabla de Contenidos

¿Qué es Ajaxterm?

Ajaxterm proporciona una vía de acceso, usando SSH, a nuestra PC a través de una página web con conexión segura (SSL). En pocas palabras, seremos capaces de acceder a una sesión SSH sin necesitar un cliente SSH, usando solamente una simple página web.

¿Qué necesitamos?

Paso 1: Instalando Ajaxterm

No hay nada más simple en sistemas derivados de Debian:

sudo apt-get install ajaxterm

Paso 2: Configuración Básica

La configuración de ajaxterm es realmente simple, encontraremos dos archivos de configuración: “/etc/default/ajaxterm” y “/etc/ajaxterm.conf”. Empezamos con: “/etc/default/ajaxterm”

sudo nano /etc/default/ajaxterm

En la primera opción podemos cambiar el puerto de escucha de ajaxterm, por defecto es 8022.

#PORT="8022"

Aquí podemos cambiar el puerto de escucha del servidor SSH si es necesario, si el servidor SSH está configurado para otro puerto distinto del 22 debemos cambiar esto.

#SERVERPORT="22"

El archivo “/etc/ajaxterm.conf” sirve para configurar el alto y ancho de la terminal que se mostrará en el navegador.

sudo nano /etc/ajaxterm.conf

Esta opción establece el ancho (por defecto: 80):

width=140;

Y esta el alto (por defecto: 25):

height=50;

Después de la instalación ajaxterm estará accesible inmediatamente si se accede a través de localhost: http://localhost:8022/

Paso 3: Configuración de Apache

Instalando Apache:

sudo apt-get install apache2 openssl

Activando módulos de Apache necesarios:

sudo a2enmod proxy proxy_http proxy_connect ssl

Configurando Apache para que escuche en los puertos requeridos:
Agrega o modifica las siguientes líneas en el archivo “/etc/apache2/ports.conf”

NameVirtualHost *:443
Listen 443

Creando un certificado auto-firmado para cifrar y asegurar el tráfico web con SSL. (los datos personales que OpenSSL pregunte no tienen que ser reales ;-)):

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -out /etc/apache2/server.crt -keyout /etc/apache2/server.key

Configurando un archivo “.htpasswd” para autenticación simple. Este paso, aunque no es obligatorio, es recomendado para incrementar la seguridad:

sudo htpasswd -c -m /etc/apache2/.htpasswd usuario

NA: La opción “-c” crea un archivo nuevo y “-m” usa MD5 para asegurar la contraseña, ya que por defecto htpasswd usa DES, el cual solo considera los primeros 8 caracteres.
Creando el Proxy Inverso para Ajaxterm:
Añade o modifica las siguientes líneas en el archivo “/etc/apache2/sites-available/default-ssl”

<VirtualHost *:443>                                                              
ServerName ajaxterm                                             
ProxyRequests Off                                                     
ProxyVia Off                                                          

<Proxy *>                                                     
Order deny,allow                                                   
Allow from all                                                     
</Proxy>                                                      

ProxyPass /ajaxterm/ http://localhost:8022/                                     
ProxyPassReverse /ajaxterm/ http://localhost:8022/                              

<Location />                                                    
Order allow,deny                                                    
Allow from all                                                      
AuthName "Ajaxterm: Acceso Restringido"                                        
AuthType Basic                                                      
AuthUserFile "/etc/apache2/.htpasswd"                               
Require valid-user                                                  
</Location>                                                     

LogLevel info                                                         
CustomLog /var/log/apache2/access_ajaxterm.log combined               
ErrorLog /var/log/apache2/error_ajaxterm.log                          
SSLEngine on                                                          
SSLCertificateFile /etc/apache2/server.crt                            
SSLCertificateKeyFile /etc/apache2/server.key                         
                                                                   
</VirtualHost>

NA: Se cuidadoso cuando edites este archivo ya que si hay líneas repetidas Apache puede mostrar un error y no ejecutarse.
Habilitando el sitio “default-ssl”:

sudo a2ensite default-ssl

Reiniciando Apache:

sudo service apache2 restart

Prueba la conexión con Ajaxterm accediendo a https://IP-de-tu-PC/ajaxterm/