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

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

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

Установка Unzip

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

Bash
sudo apt-get update
sudo apt-get install unzip

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

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

Bash
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:

Bash
sudo mv rathole /usr/local/bin/

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

Bash
nano ~/rathole-server.toml

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

Bash
[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

Bash
rathole ~/rathole-server.toml

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

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

Bash
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:

Bash
sudo mv rathole /usr/local/bin/

Создадим конфигурационный файл для Raspberry Pi rathole-client-rpi.toml

Bash
nano ~/rathole-client-rpi.toml

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

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

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

Запустим Rathole

Bash
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 со следующим содержимым:

Bash
[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
PowerShell
 notepad C:\ProgramData\ssh\sshd_config

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

PowerShell
Restart-Service -Name sshd

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

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

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

PowerShell
ipconfig

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

PowerShell
IPv4-адрес. . . . . . . . . . . . : 192.168.1.66

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

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

Bash
sudo nano /etc/ssh/sshd_config
  • добавим строчку Port 10022
  • раскомментируем строчку #Port 22
  • и PasswordAuthentication установим в yes

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

Bash
sudo systemctl restart sshd

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

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

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

Bash
ip a

и найдем

Bash
inet 192.168.1.55

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

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

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