unnamed

Si quieres conectarte a un equipo Windows desde otro ordenador y ejecutar scripts de forma remota, SSH es la forma más sencilla y segura, incluso en una red local. En este tutorial te explico cómo instalar el servicio OpenSSH, configurar el firewall y lanzar scripts .bat o PowerShell desde otro equipo usando PuTTY o Home Assistant.


1️⃣ Instalar y configurar OpenSSH Server en Windows

  1. Abre PowerShell como administrador.
  2. Ejecuta los siguientes comandos para instalar OpenSSH Server, iniciar el servicio y configurarlo para que se ejecute automáticamente tras reinicios:

# Instalar OpenSSH Server Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 # Iniciar el servicio SSH Start-Service sshd # Configurar el servicio para que arranque automáticamente Set-Service -Name sshd -StartupType 'Automatic'

Con esto, Windows ya está listo para aceptar conexiones SSH.


2️⃣ Configurar el firewall para permitir SSH

Si tu firewall está activo, necesitas permitir el tráfico entrante por el puerto 22 (puerto por defecto de SSH). Desde PowerShell como administrador, ejecuta:

New-NetFirewallRule -Name "Allow-SSH" -DisplayName "Allow SSH (port 22)" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 22 -Profile Any

Esto crea una regla que permitirá conexiones SSH desde cualquier equipo de la red local.


3️⃣ Conectarse vía SSH con PuTTY

Para conectarte al Windows remoto desde otro ordenador, puedes usar PuTTY:

  1. IP del host: por ejemplo, 192.168.1.4
  2. Port: 22
  3. Connection type: SSH
  4. Saved sessions: escribe un nombre como Windows SSH Connection y pulsa Save

Luego pulsa Open. Te pedirá:

  • Usuario de Windows
  • Contraseña del usuario

Si todo va bien, tendrás acceso a una consola remota en Windows.


4️⃣ Ejecutar scripts remotos

Una vez conectado vía SSH, puedes ejecutar tus scripts tanto con CMD como con PowerShell:

Usando CMD:

cmd /c C:\script\iniciar.bat

Usando PowerShell:

powershell -Command "& 'C:\script\iniciar.bat'"

Nota: cmd /c ejecuta el .bat con el intérprete clásico de Windows, mientras que powershell -Command "& 'ruta'" lo hace desde PowerShell, usando el call operator &.


5️⃣ Ejecutar scripts remotos desde Home Assistant

Podemos lanzar los scripts de Windows igual que hacemos desde PuTTY, pero desde Home Assistant, usando SSH y sshpass.

a) Script ssh_start.sh

Ruta: /homeassistant/shell/ssh_start.sh

#!/bin/bash
# Instalamos sshpass en cada ejecución por si se pierde tras un update del core de HA
apk add --update --no-cache sshpass

# Lanzamos el script remoto en Windows mediante SSH
# timeout 20 asegura que la sesión SSH se libere después de 20 segundos
timeout 20 sshpass -p "TU_CONTRASEÑA" ssh -o HostKeyAlgorithms=rsa-sha2-512,rsa-sha2-256 -o KexAlgorithms=+diffie-hellman-group14-sha1 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null TU_USUARIO@TU_IP "cmd /c C:\ruta\del\script\scripts_iniciar.bat"

🔹 Sustituye TU_CONTRASEÑA, TU_USUARIO, TU_IP y C:\ruta\del\script\scripts_iniciar.bat por los valores que usas en PuTTY.


b) Definir los shell_command en Home Assistant

Archivo: /config/shell_command.yaml

ssh_start: bash /config/shell/ssh_start.sh

  • ssh_start → lanza el script iniciar.bat en Windows.

c) Uso en Home Assistant

  • Ejecuta los comandos desde la herramienta de servicios o desde automatizaciones / botones:
    • Servicio: shell_command.ssh_start

timeout 20 asegura que la conexión SSH se libere después de 20 segundos, mientras el proceso en Windows sigue corriendo.

Consejos finales

  • Si tu script inicia procesos que quieras detener más tarde, recuerda que los procesos iniciados por SSH pueden estar en otra sesión. Usa taskkill /F /IM nombre.exe /T para forzar el cierre.
Comparte esta web mediante:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Facebook
X (Twitter)
YouTube
LinkedIn
Instagram