domingo, 11 de mayo de 2025

Conexiones SSH






SSH o secure shell es una de las herramientas más esenciales para cualquiera que trabaje con servidores remotos, especialmente si está gestionando su propia infraestructura o desplegando aplicaciones. ¿Qué es exactamente SSH? ssh es un protocolo para conectarse a un ordenador remoto de forma segura. esta conexión se establece a través de un canal encriptado, lo que significa que todos los datos enviados entre su máquina y el servidor remoto están protegidos contra escuchas o interceptación. SSH se utiliza principalmente en línea de comandos y a menudo lo utilizan los administradores para las transferencias de archivos y el mantenimiento de aplicaciones. Los componentes principales son el cliente y el servidor. Cuando se inicia una conexión SSH desde una máquina local esa máquina es el cliente, mientras que la máquina remota es el servidor, ahora para autenticarse en SSH hay dos métodos principales, autenticación por contraseña donde se ingresa usuario y contraseña y autenticación por clave pública y clave privada.
 
En la siguiente imagen hacemos una conexión sencilla con el usuario q3it y la IP 192.168.1.107.
 

 
Una vez dentro ya podemos gestionar el sistema. Empecemos por transferir archivos de la máquina local a la máquina remota, y para eso tenemos que utilizar el comando scp "Secure Copy Protocol" de la siguiente manera.  scp "fichero local" usuario@IP:/"Ruta destino".




Si lo que queremos es enviar un fichero al servidor invertiremos el proceso. Imaginemos que deseamos enviar el archivo Parte5-web.pdf que se encuentra en la máquina local, para eso ejecutamos la siguiente instrucción...
 
scp Parte5-web.pdf q3it@192.168.1.107:/home/q3it/Parte5-web.pdf 



Ahora vamos a probar una conexión desde mi iMAC a una máquina Windows. Lo primero que vamos a hacer es habilitar el servicio SSH en windows, normalmente solo existe el cliente SSH
 

Para instalar el SSH-Server ejecutamos las siguientes instrucciones como administrador en PowerShell.
 
#Instalando la caracteristica OpenSSH.Server
$> Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
 
#Confirmando que se haya instalado correctamente
$> Get-WindowsCapability -Online | Where-Object -Property Name -Like "OpenSSH.Server*"
 
#Verificando el servicio ssh
$> Get-Service -Name *ssh*
 
#Habilitando el servicio para que se inicie junto al sistema
$> Get-Service -Name *ssh* | Set-Service -StartupType Automatic
 
#Iniciando servicio
$> Get-Service -Name *ssh* | Start-Service
 
Ahora vamos a la consola de servicios del sistema y comprobamos que si está habilitado y corriendo.
 

Consultamos la IP de la máquina para conectarnos.
 

Probemos la conexión...
 

Como se puede ver la conexión fue exitosa 👍.
 
Un problema muy frecuente es cuando queremos conectarnos a un recurso remoto y no tenemos acceso a la red interna de nuestra empresa o casa. Para solucionar esto vamos a cacharrear un poco.

Lo primero que tenemos que hacer es consultar la IP pública y privada del servidor remoto y verificar si hay conexión con la máquina local.
 

Como vemos en la imagen anterior no tenemos conexión con la máquina local cuya IP es 192.168.42.240.
 
 
Para solucionar esto y podernos conectar desde cualquier parte mundo, necesitamos abrir un puerto en el Router del servidor remoto para que este haga NAT en la comunicación. Para este caso necesitamos abrir el puerto 22 y le especificamos la dirección IP de la máquina que va a comenzar la comunicación.

Ahora comprobamos la conexión al servidor remoto.
 

Conexión exitosa 👏👏. 

Con esto solo hemos solucionado la conexión desde la máquina local al servidor remoto. Ahora ¿Que pasa si nos queremos conectar desde el servidor remoto a la máquina local? que seguimos sin conexión.
 

Hay un truco muy chulo para solucionar este problema es crear un túnel de comunicaciones. Nosotros le enviamos un puerto a través de la comunicación desde la máquina local al servidor remoto y dicho puerto se abre en la máquina local.
 

En la imagen anterior vemos que le enviamos el puerto 30000 en la comunicación hacia el servidor, pero lo más curioso es que ese mismo servicio SSH está corriendo en la máquina local como localhost y esto permite que abra una nueva conexión entre el server y la máquina local.  

jueves, 3 de abril de 2025

Montar VPN en Ubuntu Server


Muy buenas a todos, hoy vamos a montar una red VPN con la herramienta OpenVPN en Ubuntu Server. Bueno, para hacer más fácil el manejo del Server voy a utilizar Webmin que es un software que permite a los administradores gestionar su servidor a través de una interfaz gráfica accesible desde un navegador web, eliminando la necesidad de utilizar la línea de comandos para tareas de administración comunes.

Lo primero que necesitamos es loguearnos en Webmin con conexión al Server.
 

El primer pantallazo me ofrece la Dashboard del sistema.
 

 Ahora instalamos la herramienta OpenVPN por medio de la consola de Webmin.
 

Cuando se lanza el script nos irá pidiendo datos...
 
  1. Nos pide es que le asignemos una IP para conectarse, para este caso le asignamos la IP del Ubuntu Server "192.168.1.108".
  2. Seleccionamos un protocolo "UDP".
  3. Puerto el que nos ofrece por defecto "1194".
  4. Elegimos el DNS de Google "2".
  5. Ingresamos un nombre de cliente "niko". 
Al finalizar la instalación nos da la ruta donde se encuentra el fichero de conexión "/home/q3it/niko.ovpn".
 

Si vamos a esa ruta veremos ese fichero.
 

Ahora vamos a verificar que el servicio OpenVPN está corriendo 👍.
 
 
Verificamos que el puerto 1194 está abierto 👍, y algo muy importante es saber que la herramienta nos crea un túnel de red con IP 10.8.0.0/24 para la comunicación Cliente / Servidor.
 
 
Continuamos con la ejecución del fichero niko.ovpn en UbuSer para ver que tipo de errores arroja.
 
 
El único error que nos aparece es que agreguemos al fichero la línea --data-ciphers.
 
 
Añadida esta línea, descargamos el fichero niko.ovpn en la máquina desde la cual nos queremos conectar. ¡OJO! hay que tener cuidado con este fichero ya que el que lo tenga puede conectarse. En la máquina desde donde nos vamos a conectar descargamos el software OpenVPN-Client. Para este caso lo haré desde un Windows 11 con IP 192.168.210.138.
 

Ahora probemos la conexión.
 

Cómo podemos ver cuando hacemos un tracert se conecta a través del túnel con IP 10.8.0.2 y va dando saltos hasta llegar al destino dns.google 8.8.8.8
 
Y con esto termino, nos vemos en la próxima, chao 👋😉.

miércoles, 12 de marzo de 2025

Nginx-Rtmp Servidor de video


Hola qué tal, para continuar con nuestro Servidor de Medios hoy voy a instalar la herramienta FFmpeg y algunas librerías de Nginx para que funciones correctamente. Hay que recordar que en publicaciones pasadas instalé Nginx y por esa razón solo lo voy a configurar. Pero para empezar a entender como funciona un servidor de video streaming tenemos que tener claro que significa RTMP 'Real Time Messaging Protocol'. Éste es un protocolo de comunicación diseñado para transmitir medios en tiempo real y hace referencia a la versión clásica de la tecnología de streaming RTMP. Este protocolo puede adaptarse a la velocidad de Internet, la calidad del vídeo y otras variables. Un flujo RTMP divide un vídeo pregrabado en trozos más pequeños antes de enviarlo de un dispositivo a otro. El tamaño de cada fragmento más pequeño se establece en función de la conexión a Internet disponible en ambos extremos. Teniendo claro la función que cumple el protocolo ahora necesitamos una herramienta que transmita los medios audiovisuales y ahí entra en acción FFmpeg que es la solución ideal para para convertir y transmitir formatos multimedia por medio de línea de comandos.
 
Llegó la hora de ponernos manos a la obra, para empezar ejecutamos una actualización del sistema update && upgrade. Luego instalamos las librerías de Nginx que hacen referencia al protocolo RTMP. "apt install libnginx-mod-rtmp"
 
Luego configuramos el fichero de Nginx que se encuentra en la ruta /etc/nginx/nginx.conf y agregamos al final las siguientes líneas...
 
rtmp {
            server {
                        listen 1935;
                        chunk_size 4096;
                        allow publish 127.0.0.1;
                        deny publish all;
 
                        application live {
                                    live on;
                                    record off;
                        }
            }
}
 
 
Pero vamos a ver que es lo que hace cada cada una de ellas. 
  • listen 1935 --> Escucha por este puerto.
  • chunk_size 4096 --> Enviará bloques de 4 kB.
  • allow y deny publish --> Sólo se publicará desde el servidor y el resto lo deniega.
  • live on --> Habilita el modo en vivo.
  • record off --> Deshabilita que se pueda grabar.
Para estar seguros de que el servidor Nginx tome los cambios lo reiniciamos "systemctl restart nginx" y luego vemos su status.


Ahora, ¡Necesitaremos un video para transmitir!, para solucionar esto descargamos con la herramienta yt-dlp un  video de Youtube llamado 'Historia de la robótica', pero para hacerlo más manejable lo acortamos a robotica.mp4.
 
 
Verificamos que la herramienta ffmpeg esté instalada. 
 
 
Y ya estamos listos para transmitir, ahora ejecutamos la siguiente instrucción ffmpeg -re -i "robotica.mp4" -c:v copy -c:a aac -ar 44100 -ac 1 -f flv rtmp://localhost/live/ubuser.
  • -re --> Velocidad del video.
  • -i --> Input "medio a transmitir".
  • -c:v --> Copiar el formato del video descargado.
  • -c:a --> Copie el tipo de audio.
  • -ar --> Frecuencia en hercios.
  • -f --> Empaquetado flv.
  • rtmp --> Protocolo.
  • ://localhost/live/ --> Dirección de transmisión.
 

No saltó ningún error en la ejecución. Ahora, para ver esta transmisión abrimos la herramienta VLC y en Medios/Red ponemos la dirección de emisión.
 
 
Un poco de paciencia para que sincronice el servicio con la herramienta .... y este es el resultado.
Y con esto ya tenemos montado nuestro Servidor de Streaming, nos vemos en el próximo post. 👋😉

sábado, 8 de febrero de 2025

Icecast - Servidor de Audio



Hola todos, hoy voy a montar un servidor de audio. La herramienta que voy a implementar se llama Icecast y es un proyecto para streaming de medios mantenido por la fundación Xiph.org. Puede ser utilizado para crear una estación de la radio en internet o para uso privado entre otras cosas. Es muy versátil en que los nuevos formatos se pueden agregar relativamente fácil y soporta estándares abiertos para comunicación e interacción.
 
Lo primero que debemos hacer es actualizar nuestro Ubuntu Server "update && upgrade". Luego procedemos a instalar la herramienta y sus dependencias "icecast2 ices2 vorbis-tools"
 
 
Bueno, en la siguiente imagen nos pide configurar Icecast2, le decimos yes.
 

Nos pide que ingresemos nuestro nombre de dominio.
 

Una contraseña para el servicio.


Ahora empezamos con la configuración, entramos al fichero "/etc/icecast2/icecast.xml" y ponemos los parámetros que nos interesen.
 
 
En los pantallazos anteriores vemos que podemos cambiar la ubicación, el número de clientes, el password, el usuario administrador, etc.

Ahora nos dirigimos a nuestro /home y creamos un directorio llamado /audio, y dentro de este crearemos el fichero lista.txt que va a contener el playlist de reproducción.


Modificamos el fichero que se encuentra en /etc/ices2/ices-playlist.xml.




 
De este archivo modificamos: El nombre, el genero, descripción y la ruta del playlist.
 
A continuación creamos el directorio que va a contener los Logs y le damos todos los permisos.
 
 
Ahora si le hacemos un cat al fichero lista.txt estará vacío, en ese caso necesitaremos pasar la música que va reproducir la herramienta. Para eso copiamos dos canciones que tengo dentro del usuario q3it y se lo ponemos al fichero lista.txt.
 
 
Llegó la prueba! Ejecutamos el siguiente comando ices2 /etc/ices2/ices-playlist.xml &...
 

Verificamos los Logs y parece que todo va bien. Ahora nos vamos al navegador y esto es lo que veremos...
 
 
Un truco bastante chulo, es hacer que tú blog reproduzca Radio-Streaming. En la página principal del blog thequbit.net lo he configurado, espero que os guste, Chao. 👋😉