I have a question about the WSL version of Ubuntu. Is there an easy way to have bash start automatically when Windows starts and pass a command to it to start the SSH server? So that the SSH server runs all the time when Windows runs.
Asked
Active
Viewed 2.4k times
12
-
https://askubuntu.com/questions/1165969/ubuntu-18-04-on-wsl-cron-daemon-not-running-after-reboot Related post. Also works for WSL 2 and windows 10. (for me at least) It's the same approach with the wsl.exe in the startup folder of windows. – Julian Oct 22 '22 at 11:15
1 Answers
16
This also works on WSL 2.
Solution 1: use VBE script
Click on Start and search for shell:startup. also you can go manually to:
C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
now create a new file sshserver.vbe
and add this text and save:
Set ws = CreateObject("Wscript.Shell")
ws.run "wsl -d Ubuntu -u root service ssh start", vbhide
Solution 2: Task Scheduler
Click on Start and search for Task Scheduler.
On Task Scheduler click on Action and select Create Basic Task
On Create Basic Task Fill out Name and Description "Auto Start SSH server"
On Trigger select: When the computer starts.
On Action select Start a program
On Start a Program type path:
C:\Windows\System32\wsl.exe
, next on add Add arguments (optional):-d Ubuntu -u root service ssh start
.
You should have something like this on the last step.

muru
- 197,895
- 55
- 485
- 740

Cornea Valentin
- 709
-
When I try this command I get: "/bin/bash: -d: invalid option". When I remove -d Ubuntu but keep -u root there is a similar error. With "wsl service ssh start" it runs as a non-root user and fails. "wsl sudo service ssh start" asks for a password so it cannot be autorun at startup. Perhaps after editing visudo/sudoers it could work... – PF92 Oct 11 '19 at 08:52
-
1use wsl not bash if you look close all my calls was made from windows not inside Linux. correct one: C:\Windows\System32\wsl.exe -d Ubuntu -u root service ssh start – Cornea Valentin Oct 11 '19 at 10:52
-
1
-
another solutin to use bash it's to add in your /etc/sudoers this : << username >> ALL=(ALL:ALL) NOPASSWD: ALL , replace << username >> with your username then call: C:\Windows\System32\bash.exe -c "sudo service ssh start" – Cornea Valentin Oct 11 '19 at 11:00
-
-
So wsl.exe on my laptop is an older version probably. Also, all Linux processes are killed when the shell exits. This command works for me: "wsl.exe sh -c 'sudo /usr/sbin/service ssh start; cat'", adding cat keeps the ssh server running. I used 'visudo' to add this line to sudoers: "
ALL = (ALL:ALL) NOPASSWD: /usr/sbin/service ssh start" (only running this command is allowed without a password). Later I will try if it works on Windows startup using one of the methods. – PF92 Oct 12 '19 at 10:35 -
Yes it works on startup, using the method with Startup folder and VB script (with wsl command changed like in the previous comment). Thanks for the help. – PF92 Oct 13 '19 at 07:45
-
C:\Users<< username >>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
on windows 10 home ver 1909 the dir location is different to above. C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
– CodingMatters Jan 08 '20 at 22:40 -