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-server
en un shell bash
- Correr
sudo nano /etc/ssh/sshd_config
; edite la UsePrivilegeSeparation yes
línea para leer
UsePrivilegeSeparation no
. (Esto es necesario porque
UsePrivilegeSeparation
usa chroot()
syscall, que WSL no admite actualmente).
- Mientras sigue editando
/etc/ssh/sshd_config
, puede elegir cambiar
PasswordAuthentication no
a PasswordAuthentication yes
. De lo contrario, deberá configurar las claves SSH.
- Guardar
/etc/ssh/sshd_config
y salir.
Ejecute sudo visudo
para 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.vbs
en 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.vbs
en el arranque del sistema. Use wscript.exe
como 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= No
configuració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_config
que se leePort 22
y 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
DefaultPassword
y escriba la contraseña del usuario como valor.Ejecute bash / cron loop al inicio
linux.bat
enshell:startup
Pegar:
Agregue aplicaciones / servicios al inicio en cron
sudo crontab -e
Agregue 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:
service
lugar de llamarsshd
directamente: 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 unsshd
proceso. 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 -D
con/usr/sbin/service
.sshd
directamente, deshágase de la-D
opción , ya que eso pondrá un proceso en primer plano indefinidamente. Si no me creen, basta con hacertop
y verá unainit
y unsudo
proceso para cada vez que llamó el guión. ¡No olvides eliminar la-D
opción en el archivo sudoers también!autostartsshd.ps1
y 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 start
y 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
sudo
palabra 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 visudo
comandoObserve 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.bat
y agregue contenido de la siguiente maneraAgregar
wsl_setup.bat
archivo 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