Encontré un tutorial para eso al consultar:
Esto fue originalmente discutido y resuelto por los usuarios de github imjakey, fpqc, qris, therealkenc, Manouchehri y aseering (yo mismo) aquí:
https://github.com/Microsoft/BashOnWindows/issues/612
Tenga en cuenta que ejecutar sshd tiene implicaciones de seguridad. Hasta que el modelo de seguridad de WSL haya tenido que hornearse más tiempo, debe suponer que cualquiera que pueda ingresar a su caja de Windows tiene permiso para ejecutar cualquier comando como usuario de Windows que ejecuta sshd, independientemente de los permisos de nivel de Linux. (Los permisos son probablemente más restrictivos que eso en la práctica, pero el modelo de seguridad inicial de WSL no pretende ser muy sofisticado).
Intentando agregar las instrucciones de github:
- Genere claves de host SSH ejecutándose
sudo dpkg-reconfigure
openssh-serveren un shell bash
- Correr
sudo nano /etc/ssh/sshd_config; edite la UsePrivilegeSeparation yeslínea para leer
UsePrivilegeSeparation no. (Esto es necesario porque
UsePrivilegeSeparationusa chroot()syscall, que WSL no admite actualmente).
- Mientras sigue editando
/etc/ssh/sshd_config, puede elegir cambiar
PasswordAuthentication noa PasswordAuthentication yes. De lo contrario, deberá configurar las claves SSH.
- Guardar
/etc/ssh/sshd_configy salir.
Ejecute sudo visudopara editar el archivo sudoers. Agrega la línea
$USER ALL = (root) NOPASSWD: /usr/sbin/sshd -D
reemplazando "$ USER" con su nombre de usuario de Linux. Guardar y Salir. Si visudo se queja de que sus cambios no son válidos, corríjalos hasta que informe que son válidos; De lo contrario, puede romper sudo en su sistema.
- En el lado de Windows, edite el firewall de Windows (y cualquier firewall de terceros que pueda estar ejecutando) para permitir el tráfico entrante en el puerto 22. Debido a que esta no es una configuración súper segura, recomiendo solo permitir el tráfico entrante desde el hogar ( privado) y redes de dominio, no de Internet público.
Cree un archivo de texto
autostartssh.vbsen Windows que contenga lo siguiente:
set ws=wscript.createobject("wscript.shell")
ws.run "C:\Windows\System32\bash.exe -c 'sudo /usr/sbin/sshd -D'",0
- Haga doble clic en el guión. Debería comenzar sshd; deberías poder ingresar a tu máquina Windows.
- Abra el Programador de tareas de Windows. Agregue una tarea que se ejecuta
autostartssh.vbsen el arranque del sistema. Use wscript.execomo comando para ejecutar y la ubicación del script VBS como parámetro.
Y eso es todo: ¡tu computadora con Windows debería estar ejecutando un servidor Linux openssh!
UsePrivilegeSeparation = yes, excepto que también es necesario ejecutarsudo /bin/mkdir -p /var/run/sshd(para crear los directorios de separación de privilegios) antes de iniciar sshd. ¿WLS ahora admite chroot (), ¿hay una solución alternativa en el código de openssh o la= Noconfiguración es más una recomendación de seguridad? Además, la tarea de Windows parece funcionar solo para mí si mi usuario ha iniciado sesión./etc/ssh/sshd_configque se leePort 22y cambie aPort 8822. Una razón para esto es que Windows ejecuta algún tipo de proceso SSH el 22. He visto sugerencias que dicen que no hay problema para deshabilitar eso, pero me pareció más fácil simplemente cambiar el puerto SSH WSL.Necesito hacer lo mismo.
Aquí se explica cómo iniciar el subsistema Ubuntu Linux con todos los servicios de cron en el inicio de Windows y proporcionar un medio para 'reiniciar' el subsistema Linux.
Estoy alojando con éxito la base de datos openssh-server, nginx y mariadb en nuestro servidor.
Instalar subsistema Linux
Pegar:
Instalar Ubuntu desde la tienda de Windows.
Eliminar solicitud de contraseña de sudo (requerido)
Pegar:
Habilitar inicio de sesión con contraseña SSH (opcional)
Pegar:
Inicio de sesión automático de Windows al inicio (requerido si tiene una contraseña o RDP)
Navegar hacia
Cree una nueva cadena
DefaultPasswordy escriba la contraseña del usuario como valor.Ejecute bash / cron loop al inicio
linux.batenshell:startupPegar:
Agregue aplicaciones / servicios al inicio en cron
sudo crontab -eAgregue aplicaciones de inicio como openssh-server, nginx, mysql, php:
Guardar y salir:, ctrlxluego presione yy enter.
Reinicie el subsistema Linux sin reiniciar Windows
Abrir bash o SSH en
Esto cerrará la instancia actual y creará una nueva aplicando cron.
Extra: instale PHP 7.1 (no tan sencillo)
Ejecute los siguientes comandos para una configuración bastante estándar:
Ejecute el siguiente comando para una configuración 'OwnCloud':
Extra - Instalar el servidor web nginx
Ejecute los siguientes comandos para una configuración base con PHP7.1:
Extra - Instalar la base de datos mysql de mariadb
Ejecute los siguientes comandos para un servidor de base de datos mysql:
Cuando se le solicite, configure una contraseña de usuario de la base de datos raíz.
fuente
La respuesta de @poma es muy buena, y de eso se basa mi respuesta. Sin embargo, quiero agregarle algunas mejoras:
servicelugar de llamarsshddirectamente: en'sudo service ssh start'lugar de'sudo /usr/sbin/sshd -D'. De esa manera, incluso si llama al script varias veces, solo habrá como máximo unsshdproceso. Además, es fácil matarlo con otro script que se ejecuta'sudo service ssh stop'. En el archivo sudoers, simplemente necesita reemplazar/usr/sbin/sshd -Dcon/usr/sbin/service.sshddirectamente, deshágase de la-Dopción , ya que eso pondrá un proceso en primer plano indefinidamente. Si no me creen, basta con hacertopy verá unainity unsudoproceso para cada vez que llamó el guión. ¡No olvides eliminar la-Dopción en el archivo sudoers también!autostartsshd.ps1y pegar en la siguiente:bash -c 'sudo service ssh start'. Para ejecutar el script, haga clic derecho y haga clicRun with PowerShell.Otra pregunta de desbordamiento de pila tiene pasos similares: /superuser//a/1114162/182590
Espero que ayude a alguien :)
fuente
sudo service ssh starty luego cierras bash, matará a ssh daemon. Al menos eso es lo que hizo al momento de escribir mi guía.poner
bash -c "echo [password] | service ssh start"en el script de inicio de Windows y usar su propia contraseña de sudo para sustituir [contraseña]fuente
sudopalabra clave necesaria que implica su oración). Esto simplemente no funciona. ¡No es que siempre debas guardar tu contraseña en texto sin formato!Las respuestas de @Poma y @Hintron son geniales.
Me gustaría ampliar la descripción del último punto sobre cómo agregar tareas ssh en el Programador de tareas de Windows, ya que requiere cambiar algunas opciones:
Se utiliza la invocación directa de bash. No hay necesidad de envolverlo en vbs o scripts de PowerShell.
Uso el comando de servicio por razones que @Hintron explicó. Además, la invocación directa de sshd da error
En tal caso, se debe agregar esta entrada por
sudo visudocomandoObserve también que aquí todos los usuarios (primera columna) pueden iniciar o detener sshd. Si solo es un usuario de esta máquina con Windows, entonces debería estar bien.
fuente
Cree un archivo llamado
wsl_setup.baty agregue contenido de la siguiente maneraAgregar
wsl_setup.batarchivo a la carpeta de inicio de Windows windows-10-change-startup-appsReinicie e inicie sesión en su cuenta de Windows (sí, debe iniciar sesión)
fuente