Build SSH for Development on Windows Subsystem for Linux
It seems that Windows Subsystem for Linux (WSL) is getting much more mature than the time when it first came out. Fewer and fewer people keep questioning its fitness for daily development. Tuning WSL to be a neat developing environment and how to SSH into WSL the topic I am going to share with.
One-Click installation
The installation entry of several Linux distributions available for WSL has been moved to Microsoft Store since the Fall Creators.
It means you can install a Linux distribution as simple as installing an app from the store. The moment I am writing this, Ubuntu, Debian, OpenSUSEand Kali Linux are officially collected into the WSL family.
I choose Debian as my first trial for WSL.
If nothing goes wrong, the familiar icon will show up in the start menu after the installation. Click it, boot it on and create your Linux user account.
As you can see in the Task Manager, required few seconds to get ready, WSL have very small demand for resource and please don't forget that it is able to offer almost full Linux experience to you. So that is pretty good enough as a subsystem.
By the way, this command can lead you to your C:/.
cd /mnt/c
Similarly, /mnt/d for D:/ and so on.
Simple configuration
You can tweak it in the same way as you play with Linux as usual when you have got this far. The following are things I have done just after the installation.
Update sources.list
Replacing stable to testing will let your Debian have access to the latest version of software updates.
sudo nano /etc/apt/sources.list
Configure locale
Select your language to add UTF8 locales support by doing this.
sudo dpkg-reconfigure locales
Create a shortcut on the desktop
The path to Debian(WSL) root follows the format:
C:\Users\username\AppData\Local\Packages\TheDebianProject.DebianGNULinux_xxxxxxxxxxxxx\LocalState\rootfs
However, do not move or delete or do anything else on files in WSL with Windows File Explorer which might mess up the file permission on Linux File System. That causes tons of problems. Here it can only be used as a single-function graphical File Explorer.
SSH to WSL
Considering that it is a kind of awkward experience to run bash in CMD, so here I introduce MobaXterm to you. Next, we are about to build up an SSH server on WSL and pair it with MobaXterm through SSH connection.
Install OpenSSH server
OpenSSH is the premier connectivity tool for remote login with the SSH protocol.
sudo apt-get install openssh-server
Edit the configuration and change the listening port for the reason that Port 22 as the default setting has been already taken by SSH service running on Windows.
sudo nano /etc/ssh/sshd_config
To make sure SSH server on WSL works well, change Port 22 into Port 2018 or whatever you prefer.
Port 2018 ListenAddress 0.0.0.0 PermitRootLogin prohibit-password
the above is the scanty lines you have to deal with in the sshd_config. Then start the SSH service.
sudo service ssh start
Use MobaXterm to SSH
MobaXterm has not only SSH support but also full X-Server support if you need. Two editions (Home Edition and Professional Edition) are provided with free one and paid one.
I download MobaXterm Home Edition (Portable edition) which already fulfils my demand.
Create a new session and edit its configuration. Remote host is set as127.0.0.1. Remember that Port should be 2018 or the same port you decided several minutes ago. You can tweak other settings catered for your appetite.
If your Debian is running well with SSH enabled, it must work. Select Remember the Password to save the time you type in your password whenever booting the WSL.
Now enjoy WSL with the excellent terminal experience supplied by MobaXterm.
Auto-boot WSL with SSH started
It is so unpleasant to manually start SSH service each time you turn WSL on and the bot to boot WSL at the same time as you log in Windows can be the thing what you want.
Also, you will soon notice that the SSH connection goes bad when you shut down the CMD window which is quite bothering.
Here comes the solution to the three so-called problems.
Auto-start SSH service
Write a shell script named init.sh placed in /home.
sudo -S service ssh start << EOF <your_password> EOF
Replace <your_password> to your root password.
The object of the tiny script is to start SSH service in sudo mode when you execute this shell.
Write a VBS script on your Windows host.
Set ws = CreateObject("Wscript.Shell") ws.run "bash /home/init.sh",vbhide
To mention that, WSL can be start up by typing bash in CMD or Powershell. The script is so self-explain that it will obviously run the init.sh as well after booting WSL.
vbhide at the end of the line tells that it runs silently in the background.
Actually, it doesn't matter that what sort of name you give to the shell above and where you place it. Just to be sure the path-to-the-shell has to be identical in two scripts.
Auto-boot WSL in background
It is much easier to achieve this goal since the big steps have got settled in the previous move.
Set the VBS script into the scheduled tasks performing when Windows host logins.
Reboot Windows and keep an eye on the Task Manager. if two processes namedinit (depends on the name of the shell) and sshd exist, then you can immediately start MobaXterm to SSH into WSL without any other keyboard job.
Job done
Now, the complete WSL with SSH workflow has been set up.
Thanks for reading :)
- Running ASP.NET Core applications on Windows Subsystem for Linux
- WSL(Windows Subsystem for Linux, Bash On Windows)笔记(ubuntu为例)
- WSL(Windows Subsystem for Linux, Bash On Windows)使用笔记
- Windows Subsystem for Linux 环境变量
- 在win10中使用Windows Subsystem for Linux(Archlinux)
- Setting Up the Development Environment for SharePoint 2010 on Windows Vista,
- configure for build qt5.3.1 static windows/linux
- windows linux子系统(Windows Subsystem for Linux)的存放目录
- Windows Subsystem for Linux (WSL)挂载移动硬盘U盘
- 自由软件之父 Stallman:微软的 Windows Subsystem for Linux (WSL)会阻碍自由软件发展
- Workshop For Embedded Linux Development on PowerPC
- How to Set Classpath for Java on Windows and Linux
- Windows 下的 Linux 子系统Windows Subsystem for Linux(WSL)
- WSL Windows Subsystem for Linux安装指南
- QtCreator on Windows to Cross Compile for Linux ARM with CodeSourcery Toolchain
- How to: Grant Permission on Development Severs as Batch for Windows Authentications
- Compile for Windows on Linux(交叉编译,在Linux下编译Windows程序),以OpenSSL为例
- Windows Subsystem for Linux
- windows subsystem on linux安装步骤
- 打通windows和Linux下的传输问题解决只能使用SSH协议下的22端口来传输文件(Openssh for windows)