# ADB accessing in WSL2 ### Steps 1. WSL2 enable `ssh-server` and allowing login via ssh-key. ```bash= apt-get install openssh-server ``` ```bash= vim /etc/ssh/sshd_config # Port 22 # PasswordAuthentication yes ``` ```bash= /etc/init.d/ssh restart ``` 2. Write ssh public key of host to WSL2's `authorized_keys` file. > **{REMOTE-USERNAME}** is your username in WSL2 > **{REMOTE-IP-ADDRESS}** is your WSL2's IP address ```bash= # Windows (pwsh) type $env:USERPROFILE\.ssh\id_rsa.pub | ssh {REMOTE-USERNAME}@{REMOTE-IP-ADDRESS} "cat >> .ssh/authorized_keys" ``` 3. Start new ADB server session in Windows (Host) side. ```bash= # Windows (pwsh) adb kill-server adb start-server ``` 4. SSH tunnelling from Host to WSL2. **Hint: DO NOT use `localhost`, just use `127.0.0.1` directly** ```bash= # Windows (pwsh) ssh -XC -R 5037:127.0.0.1:5037 {REMOTE-USERNAME}@{REMOTE-IP-ADDRESS} ``` |Option|Description| |-|-| |-X|Enables X11 forwarding. This can also be specified on a per-host basis in a configuration file.| |-C|Requests compression of all data (including stdin, stdout, stderr, and data for forwarded X11, TCP and UNIX-domain connections).| |-R|`-R remote_socket:host:hostport`<br>Specifies that connections to the given TCP port or Unix socket on the remote (server) host are to be forwarded to the local side.| 5. In WSL2 side, now we can perform adb commands directly. ```bash= # WSL2 adb devices # output: # List of devices attached # 0123456789ABCDEF device ``` ### References * [How to Enable SSH on Ubuntu 20.04](https://linuxize.com/post/how-to-enable-ssh-on-ubuntu-20-04/) * [ADB in WSL2](https://github.com/microsoft/WSL/discussions/4692#discussioncomment-87987) * [[WSL2][Ubuntu][踩坑]adb的两种实现](https://blog.csdn.net/u014175785/article/details/113438143) ###### tags: `android` `adb` `wsl`