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
- Abre PowerShell como administrador.
- 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:
- IP del host: por ejemplo,
192.168.1.4 - Port:
22 - Connection type: SSH
- Saved sessions: escribe un nombre como
Windows SSH Connectiony 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 /cejecuta el.batcon el intérprete clásico de Windows, mientras quepowershell -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_IPyC:\ruta\del\script\scripts_iniciar.batpor 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 scriptiniciar.baten Windows.
c) Uso en Home Assistant
- Ejecuta los comandos desde la herramienta de servicios o desde automatizaciones / botones:
- Servicio:
shell_command.ssh_start
- Servicio:
✅
timeout 20asegura 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 /Tpara forzar el cierre.