Задача

Получить доступ к Raspbery Pi с любой точки мира через SSH. По этому же принципу кроме SSH можно достучаться до FTP, веб приложениям и сайтам, а также любым другим сервисам

Имеем

  • Роутер TP-Link TL-WR740N, к которому подключен raspberry
  • Raspberry Pi 3 Model B+ с установленной и подключенной к Wifi OS Raspbian. Напишите в комментариях, если с этим проблемы
  • Любое устройство с SSH клиентом

Общий план

  1. Включаем на Raspberry доступ по SSH
  2. В настройках роутера закрепляем за MAC-адресом Raspberry статический IP внутри сети (например, 192.168.1.123)
  3. Там же делаем 22 порт (SSH) расбы доступным "снаружи"

Включаем SSH

  1. Подключаем к расбе монитор и клаву
  2. Открываем терминал и запускаем утилиту настройки sudo raspi-config
  3. Находим Interfacing Options > SSH > включаем, Enter

Закрепляем за расбой IP внутри сети

Это нужно для того, чтобы роутер всегда выдавал нашей малинке один и тот же ИП внутри сети

  1. Входим в админку роутера, открыв в браузере 192.161.1.1 (адрес может отличаться. Найти можно, введя в консоль ipconfig. Ищите там похожие адреса). Роутер может запросить логин и пароль. Попробуйте найти наклейку на самом роутере или попробуйте admin admin
  2. Находим мак-адрес расбы ifconfig wlan0 | grep ether
  3. Находим раздел для резервации IP и прописываем там найденный мак. Если у вас получилось подключиться к роутеру по 192.161.1.1, то можете смело указывать рядом с маком 192.168.1.123. В другом случае может потребоваться изменение адреса, как требует DHCP (настраивается рядом, скорее всего)
    dhcp-mac-ip-reservation
  4. После перезагрузки роутера Raspberry должен выделиться новый внутренний адрес. Проверить можно введя на нем ifconfig wlan0. Если этого не случилось, то поищите настройки, похожие на те, что на скриншоте ниже
    binding-ip-to-mac
    Также убедитесь, что с этого момента вы можете подключиться к расбе через ssh pi@192.168.1.123. Напишите в комментариях, если возникли проблемы

Пробрасываем 22 порт с расбы "наружу"

Сейчас Raspberry доступна только во внутренней сети. Тоесть, вы можете подключиться к ней с устройств, подключенных к тому же WiFi. Чтобы к ней можно было подключиться с "мира" мы должны рассказать роутеру, на какое устройство перенаправлять трафик по 22 порту.

Наша Raspberry с предыдущего пункта имеет адрес 192.168.1.123

  1. Находим настройки виртуальных серверов (virtual servers). Может иметь другое название, но должно быть связано с разделом переадресации (redirects)
    tp-link-virtual-servers-settings
  2. Добавляем новое правило. Порты некоторых сервисов: SSH 22, FTP 21, WEB 80 и 443 (для https://)
    tp-link-add-virtual-server
  3. Перезагружаем роутер и подключаемся к устройству уже через ssh pi@ip, где ip -- ваш внешний IP адрес (можно узнать на 2ip.ru)
  4. Вы великолепны

Если у вас динамический IP

Предположим, что у вас, как и уменя, изменяется IP, а значит, что однажды вы не сможете достучаться до своей Raspberry по адресу, "который вчера еще работал". В таких случаях удобнее использовать домен в качестве адреса для подключения. Здесь я рассказывал, как это сделать.

И напоследок, буду рад вопросам в комментариях. Это позволит сделать пост более информативным и полезным