124 lines
2.5 KiB
Markdown
124 lines
2.5 KiB
Markdown
|
# Tunnels
|
||
|
|
||
|
Scrcpy is designed to mirror local Android devices. Tunnels allow to connect to
|
||
|
a remote device (e.g. over the Internet).
|
||
|
|
||
|
To connect to a remote device, it is possible to connect a local `adb` client to
|
||
|
a remote `adb` server (provided they use the same version of the _adb_
|
||
|
protocol).
|
||
|
|
||
|
|
||
|
## Remote ADB server
|
||
|
|
||
|
To connect to a remote _adb server_, make the server listen on all interfaces:
|
||
|
|
||
|
```bash
|
||
|
adb kill-server
|
||
|
adb -a nodaemon server start
|
||
|
# keep this open
|
||
|
```
|
||
|
|
||
|
**Warning: all communications between clients and the _adb server_ are
|
||
|
unencrypted.**
|
||
|
|
||
|
Suppose that this server is accessible at 192.168.1.2. Then, from another
|
||
|
terminal, run `scrcpy`:
|
||
|
|
||
|
```bash
|
||
|
# in bash
|
||
|
export ADB_SERVER_SOCKET=tcp:192.168.1.2:5037
|
||
|
scrcpy --tunnel-host=192.168.1.2
|
||
|
```
|
||
|
|
||
|
```cmd
|
||
|
:: in cmd
|
||
|
set ADB_SERVER_SOCKET=tcp:192.168.1.2:5037
|
||
|
scrcpy --tunnel-host=192.168.1.2
|
||
|
```
|
||
|
|
||
|
```powershell
|
||
|
# in PowerShell
|
||
|
$env:ADB_SERVER_SOCKET = 'tcp:192.168.1.2:5037'
|
||
|
scrcpy --tunnel-host=192.168.1.2
|
||
|
```
|
||
|
|
||
|
By default, `scrcpy` uses the local port used for `adb forward` tunnel
|
||
|
establishment (typically `27183`, see `--port`). It is also possible to force a
|
||
|
different tunnel port (it may be useful in more complex situations, when more
|
||
|
redirections are involved):
|
||
|
|
||
|
```
|
||
|
scrcpy --tunnel-port=1234
|
||
|
```
|
||
|
|
||
|
|
||
|
## SSH tunnel
|
||
|
|
||
|
To communicate with a remote _adb server_ securely, it is preferable to use an
|
||
|
SSH tunnel.
|
||
|
|
||
|
First, make sure the _adb server_ is running on the remote computer:
|
||
|
|
||
|
```bash
|
||
|
adb start-server
|
||
|
```
|
||
|
|
||
|
Then, establish an SSH tunnel:
|
||
|
|
||
|
```bash
|
||
|
# local 5038 --> remote 5037
|
||
|
# local 27183 <-- remote 27183
|
||
|
ssh -CN -L5038:localhost:5037 -R27183:localhost:27183 your_remote_computer
|
||
|
# keep this open
|
||
|
```
|
||
|
|
||
|
From another terminal, run `scrcpy`:
|
||
|
|
||
|
```bash
|
||
|
# in bash
|
||
|
export ADB_SERVER_SOCKET=tcp:localhost:5038
|
||
|
scrcpy
|
||
|
```
|
||
|
|
||
|
```cmd
|
||
|
:: in cmd
|
||
|
set ADB_SERVER_SOCKET=tcp:localhost:5038
|
||
|
scrcpy
|
||
|
```
|
||
|
|
||
|
```powershell
|
||
|
# in PowerShell
|
||
|
$env:ADB_SERVER_SOCKET = 'tcp:localhost:5038'
|
||
|
scrcpy
|
||
|
```
|
||
|
|
||
|
To avoid enabling remote port forwarding, you could force a forward connection
|
||
|
instead (notice the `-L` instead of `-R`):
|
||
|
|
||
|
```bash
|
||
|
# local 5038 --> remote 5037
|
||
|
# local 27183 --> remote 27183
|
||
|
ssh -CN -L5038:localhost:5037 -L27183:localhost:27183 your_remote_computer
|
||
|
# keep this open
|
||
|
```
|
||
|
|
||
|
From another terminal, run `scrcpy`:
|
||
|
|
||
|
```bash
|
||
|
# in bash
|
||
|
export ADB_SERVER_SOCKET=tcp:localhost:5038
|
||
|
scrcpy --force-adb-forward
|
||
|
```
|
||
|
|
||
|
```cmd
|
||
|
:: in cmd
|
||
|
set ADB_SERVER_SOCKET=tcp:localhost:5038
|
||
|
scrcpy --force-adb-forward
|
||
|
```
|
||
|
|
||
|
```powershell
|
||
|
# in PowerShell
|
||
|
$env:ADB_SERVER_SOCKET = 'tcp:localhost:5038'
|
||
|
scrcpy --force-adb-forward
|
||
|
```
|