
У меня есть вариант использования, когда у меня есть 6 моих Raspberry Pi, находящихся за частным брандмауэром, и мне нужен доступ к ним из моих локальных систем. Поэтому я придумал архитектуру, показанную ниже
- Из моего rpi обратный ssh на определенный порт моего облачного сервера
И из моей локальной системы подключаюсь к rpi, используя мой облачный сервер в качестве jumpbox (SSH ProxyJump)
Firewall +--------+ | +---------+ +----------------+ | Rpi 1 |-> 2101/tcp ->| -> | | <- 22/tcp - | Local System 1 | +--------+ | | | +----------------+ | | | +--------+ | | Cloud | +----------------+ | Rpi 2 |-> 2201/tcp ->| -> | Server | <- 22/tcp - | Local System 2 | +--------+ | | | +----------------+ ... | | | +--------+ | | | +----------------+ | Rpi 6 |-> 2601/tcp ->| -> | | <- 22/tcp - | Local System 3 | +--------+ | +---------+ +----------------+
Изначально я использовал прямые команды SSH, но столкнулся с проблемами, например, соединение становилось устаревшим и не отвечало через некоторое время. Поэтому я перешел на autossh
. Я начал systemd
делать эту операцию.
autossh -Nf -M 0 -o ServerAliveInterval=120 -o ServerAliveCountMax=3 -R 2101:127.0.0.1:22 root@my-server-ip
Это отлично работает для моих 6 устройств. Но когда я пытаюсь подключить больше устройств, туннель, похоже, не подключается (т. е. туннель установлен из rpi, но на netstat -lnpt
облачном сервере ничего нет.
Теперь мне нужно знать, правильный ли это подход для решения этого варианта использования. Учитывая это, это количество 6 rpi может увеличиться до 20 или 30 в будущем. Есть предложения по улучшению?