Rathole: подключение Raspberry Pi к Windows через удаленный сервер — HmHm.WTF

Rathole: подключение Raspberry Pi к Windows через удаленный сервер

Устанавливаем и настраиваем Rathole для создания соединения между Raspberry Pi и Windows через удаленный сервер.

Установка Unzip

Установим Unzip на сервер и RPi

sudo apt-get update
sudo apt-get install unzip

Установка Rathole на сервер

Скачаем и распакуем Rathole:

wget https://github.com/rapiz1/rathole/releases/download/v0.5.0/rathole-x86_64-unknown-linux-gnu.zip
unzip rathole-x86_64-unknown-linux-gnu.zip

Переместим исполняемый файл в /usr/local/bin:

sudo mv rathole /usr/local/bin/

Создадим конфигурационный файл для сервера rathole-client.toml

nano ~/rathole-server.toml

со следующим содержимым:

[server]
    bind_addr = "0.0.0.0:2333"

[server.services.ssh_rpi]
    bind_addr = "0.0.0.0:10022"
    token = "12345rpi"

[server.services.ssh_windows]
    bind_addr = "0.0.0.0:10023"
    token = "12345windows"

server:
- bind_addr = "0.0.0.0:2333" — это основной адрес и порт, на котором Rathole будет слушать входящие соединения от клиентов. В данном случае, он доступен на всех интерфейсах
server.services.ssh_rpi:
- bind_addr = "0.0.0.0:10022" — этот сервис настроен для проксирования SSH-соединений, предназначенных для Raspberry Pi. Он будет слушать на порту 10022 на всех интерфейсах.
- token = "12345rpi" — токен используется для аутентификации клиентов, подключающихся к этому сервису.
server.services.ssh_windows:
- bind_addr = "0.0.0.0:10023" — этот сервис настроен для проксирования SSH-соединений для домашнего устройства. Он будет слушать на порту 10023.
- token = "12345windows" — токен для аутентификации клиентов, подключающихся к этому сервису.
Запустим Rathole

rathole ~/rathole-server.toml

Установка Rathole на Raspberry Pi

Скачаем и распакуем Rathole:

wget https://github.com/rapiz1/rathole/releases/download/v0.5.0/rathole-aarch64-unknown-linux-musl.zip
unzip rathole-aarch64-unknown-linux-musl.zip

Переместим исполняемый файл в /usr/local/bin:Создадим конфигурационный файл для Raspberry Pi rathole-client-rpi.toml


со следующим содержимым:

[client]
    remote_addr = "IP_адрес_сервера:2333"

[client.services.ssh_rpi]
    token = "12345rpi"
    local_addr = "127.0.0.1:22"

Запустим Rathole

rathole -c ~/rathole-client-rpi.toml

Установка Rathole на Windows

Скачаем и распакуем Rathole rathole-x86_64-pc-windows-msvc.zip в папку C:\rathole.Создадим конфигурационный файл для Windows rathole-client-windows.tomlв папке C:\rathole со следующим содержимым:

[client]
remote_addr = "IP_адрес_сервера:2333"

[client.services.ssh_windows]
token = "12345windows"
local_addr = "127.0.0.1:22"

Создадим скрипт для запуска rathole.exe с файлом конфигурации rathole-client-windows.toml:Plaintext

@echo off
cd /d "C:\Program Files\rathole"
start /B rathole.exe rathole-client-windows.toml

Передаем файл с Raspberry Pi на Windows

Проверим файл конфигурации SSH Windows (обычно находится в C:\ProgramData\ssh\sshd_config):
- добавим строчку Port 10023
- и PasswordAuthentication установим в yes

notepad C:\ProgramData\ssh\sshd_config

Перезапустим службу SSH:

Restart-Service -Name sshd

Чтобы передать файл, введем команду в консоли Raspberry Pi

scp -P 10023 \
    /path/on/rpi/file.txt \
    win_user@win_ip_adress:/path/on/windows/

Чтобы узнать IP компьютера на Windows, введем в консоли:

ipconfig

и найдем IPv4-адрес


Передаем файл с Windows на Raspberry Pi

Проверим файл конфигурации SSH Raspberry Pi:

sudo nano /etc/ssh/sshd_config
sudo systemctl restart sshd

Чтобы передать файл, введем команду в консоли Windows

scp -P 10022 path\to\your\file.txt rpi_user@rpi_ip_adress:/path/on/rpi/

Чтобы узнать IP Raspbery Pi, введем в консоли:

ip a

и найдем

inet 192.168.1.55

Если вы не можете ввести ответ на запрос о подтверждении подключения введите следующую команду

scp \
    -o StrictHostKeyChecking=no \
    -P 10022 \
    path\to\your\file.txt \
    rpi_user@rpi_ip_adress:/path/on/rpi/

Это позволит вам избежать запроса на подтверждение ключа хоста, но это может снизить безопасность.