Обход NAT
@termuxguide
Представим вы забыли устройство дома, но вам срочно нужно к нему подключиться и выполнить несколько команд. Доступ к вашему устройству можно получить через интернет, даже если вы находитесь за устройством NAT (например, маршрутизатор Wi-Fi или мобильный интернет). Есть несколько способов добиться этого, но потребуется установка дополнительного программного обеспечения и небольшая настройка.
Содержание
Предварительная настройка
Так как все перечисленные ниже примеры удалённого управления осуществляются по ssh, нам нужно его настроить.
Установите его, выполнив
pkg install openssh
Затем для базовой безопасности установите пароль пользователя командой passwd . Этот пароль затем будет запрашиваться при удалённом подключению к устройству
$ passwd New password: Retype new password: New password was successfully set.
Обратите внимание, что пароль при вводе не будет отображаться. Если вам потребуется его сменить, в любой момент вновь воспользуйтесь этой командой, однако не забудьте после этого перезапустить сервис(ы) использующие этот пароль.
Теперь запустите сервис ssh. Запускайте каждый раз, когда вам потребуется воспользоваться методами удалённого подключения, описанные ниже
sshd
TOR
Доступ к устройству через Tor является наиболее безопасным и эффективным способом - предлагается надёжное сквозное шифрование (при этом службы onion не используют выходную ноду), ваша служба не будет видна в простом интернете.
1. Установка нужных пакетов:
Основной пакет - это tor. Установите его, выполнив эту команду:
pkg install tor
Для доступа к сети Tor установите torsocks:
pkg install torsocks
2. Настройка Onion Service
Вам придется изменить файл конфигурации по умолчанию для tor ($PREFIX/etc/tor/torrc). Я буду использовать редактор nano, но сперва его нужно установить
pkg install nano
Теперь редактируем конфигурационный файл
nano $PREFIX/etc/tor/torrc
Вот пример настройки SSH Onion Service:
## Enable TOR SOCKS proxy SOCKSPort 127.0.0.1:9050 ## Hidden Service: SSH HiddenServiceDir /data/data/com.termux/files/home/.tor/hidden_ssh HiddenServicePort 22 127.0.0.1:8022
Затем вам нужно создать каталог, в котором будет храниться информация о скрытом сервисе:
mkdir -p ~/.tor/hidden_ssh
Теперь можно выполнить в консоли tor. Выполнив эту команду, ваше устройство благодаря настройке на предыдущих шагах становится сервером. Если запуск прошел успешно, вывод должен быть таким

Так как сервис tor занял текущую сессию терминала, откройте вторую сессию Termux и узнайте имя своего хоста службы onion:
cat ~/.tor/hidden_ssh/hostname
Вывод должен быть примерно таким: g3yv3tvqrbow7koz.onion
3. Доступ к вашему сервису
Прежде всего убедитесь, что на клиенте (вашем другом устройстве с коего вы хотите удалённо подключиться к Termux) tor запущен, и у вас есть всё необходимое программное обеспечение для доступа к сети Tor (в данном случае пакет torsocks).
Чтобы получить доступ к луковому сервису, созданному на предыдущем шаге, запустите:
torsocks ssh g3yv3tvqrbow7koz.onion
Конечно же используя своё имя хоста. Если все в порядке, вывод должен быть примерно таким:
The authenticity of host 'g3yv3tvqrbow7koz.onion (127.42.42.0)' can't be established. ED25519 key fingerprint is SHA256:WGualHEq7SJdvVeXgy8a+btPQCd7uxTeXjlWdHHLwLc. Are you sure you want to continue connecting (yes/no)?
Помните, что tor должен работать на обеих сторонах (клиент/сервер), иначе вы получите ошибку соединения.
Tmate
Tmate - это терминальный мультиплексор с мгновенным обменом терминалами, то есть он позволяет использовать сеанс терминала с несколькими доверенными пользователями. Другими словами вы можете "транслировать" содержимое вашего терминала другим пользователям, а также позволять им пользоваться вашим терминалом.
Утилита может быть установлена с помощью pkg install tmate.
1. Выполните следующую команду в Termux:
tmate

2. Как только вы выполнили предыдущий шаг, вы должны увидеть цветную линию внизу экрана со ссылкой. Сохраните её, это ваш токен подключения. Выглядит он примерно так:
Bff5fhJquRpO105c3OL62Icfp@fk2.tmate.io
3. На другом устройстве, с которого вы хотите подключиться к Termux, запустите
ssh Bff5fhJquRpO105c3OL62Icfp@fk2.tmate.io
После подключения, ваш экран будет занят таким же содержимым как на картинке выше. Вдобавок к этому отобразится строка примерно следующего содержания:
A mate has joined (208.67.222.222) -- 1 client currently connected
Чтобы скрыть меню как на картинке выше, нажмите "Q" или сочетание клавиш "Ctrl + C". А чтобы вернуть его обратно выполните
tmate-show-messages
Обратите внимание на вырезанную часть предыдущего скриншота:

Как видим tmate сгенерировал четыре ссылки. Ссылки обведённые красным прямоугольником нужны для режима "только чтение", то есть подключённый по этим ссылкам пользователь может только видеть что делает другой пользователь или пользователи. Как вы уже поняли, ссылки ниже позволяют подключившемуся полноценно пользоваться терминалом. Следует также знать, что есть два типа сессий: первая это web-сессия, вторая - ssh-сессия. То есть пользоваться терминалом можно и через браузер. Однако я бы всегда советовал вам использовать ssh сессию, это гораздо безопаснее, конфидинциальнее и экономнее.
- Перед тем как давать пользователю ссылку на сессию "только чтение" очистите ваш терминал, так как пользователь может увидеть ссылки на сессии для управления терминалом.
- После выхода из сессии (команда
exit) tmate убьёт процесс отвечающий за возможность повторного удалённого подключения. Или используйте опцию-Fпри запуске tmate.
Возможные ошибки

Ошибка выше обычно связана с тем, что tor возможно уже запущен, о чём сообщается в логах. Цветами выделено сообщение, в котором предупреждается о невозможности получить доступ к порту 9050 нашего локального айпи адреса т.к порт уже используется. Ну а по скольку порт 9050 обычно используется для tor, следует логичный вопрос: tor уже запущен?
Спасибо за прочтение. Возникли вопросы? Есть желание что-то добавить/подправить?
Написать автору - @Enleann
Поддержать автора - donationalerts.com/r/enleann
📢Наш канал 👉 t.me/termuxguide
📢Новостной канал 👉 t.me/termuxnews
👥Наш чат 👉https://t.me/joinchat/LPoOWVlTjQr3_hOqJQp7Qw
📝Правила чата 👉 https://telegra.ph/Pravila-02-17-4
🎥Наш YouTube 👉 https://www.youtube.com/channel/UCarM3p7WADTtauCIRdqHpsg
🤝Связь с администрацией 👉 @suptermux_bot
🛒Магазин, услуги и т.п. 👉 @termstore_bot
👤Создатель чата и админ канала 👉 @reposit0r
👤Создатель канала и зам. главы чата 👉 @Enleann