Настройка SSH через интернет на моем Pi


16

Это может быть простой вопрос, но, поскольку я прочитал противоречивую информацию из нескольких ресурсов (что? Противоречия в Интернете?), Я хотел знать, сделал ли я все, что должен.

Поэтому я хочу настроить SSH-соединение с моим RasPi, чтобы иметь доступ к нему через Интернет.

  1. Я начал с активации SSH на Pi, запустив Raspbian, используя этот raspi-configинструмент.
  2. Затем я установил клиент no-ip.com на свой Pi, чтобы имя хоста указывало на мой динамический IP-адрес.
  3. Я посмотрел мой LAN IP на моей малины с помощью ifconfig
  4. Наконец, в утилите конфигурирования моего маршрутизатора в разделе переадресация портов я включил переадресацию порта 22 в TCP и UDP на локальный ip моего pi.

После этого я не могу показывать SSH своему пи через интернет. Это работает, когда я пытаюсь подключиться к своей локальной сети, используя свой локальный IP-адрес, но не используя имя хоста или IP-адрес в Интернете. Я также попытался подключиться из другого места, и ничего не работает.

Мой вопрос: я пропускаю какие-либо шаги? Есть ли файлы конфигурации, которые я должен редактировать на своем пи, чтобы все работало?


Пожалуйста, включите вывод iptables -Lвашего Pi.
deed02392

1
Вы уже решили эту проблему? Если да, то не могли бы вы отметить ответ, который разрешил его, или создать ответ, в котором указано, что вы сделали, а затем пометить его как ответ? Это было бы здорово, так как мы пытаемся улучшить сайт. Вопрос: Кажется, этот вопрос оставлен на некоторое время незатронутым вами @Zeta. Благодарность!
RPiAwesomeness

Я использую no-ip.com для подключения к своему Pi через Интернет для Интернета и SSH, поэтому возможно, возможно, ваш маршрутизатор или Интернет-провайдер блокирует входящий трафик?
Аластер Монтгомери

Это очень похоже на маршрутизатор, который не поддерживает петлю NAT.
Flakeshake

Я нашел эту ссылку: raspberryanywhere.com Возможно, это может быть какой-то помощи. Я пользуюсь сервисом уже несколько недель, и он отлично работает! Ссылка предоставляет простой программный обозреватель, например, для доступа к вашей доске малины, где бы вы ни находились. Кроме того, вы можете использовать свой обычный клиент SSH; они просто предоставляют виртуальный адрес для подключения к вашей плате через SSH или HTTP. Это стоит попробовать наверняка!
Стефано Стефано

Ответы:


12

Если вы планируете подключаться к Raspberry Pi только через SSH через Интернет, вероятно, ngrok.com может удовлетворить вашу проблему наиболее удобным способом.

Он перенаправляет ваш порт (ы) с помощью какого-то обратного туннеля и может даже помочь обойти брандмауэры или ограничения вашего провайдера. Вы должны зарегистрироваться (бесплатно) на сайте для пересылки TCP-трафика.

Я никак не связан с этим проектом; Я просто использовал его для реализации той же идеи (в моем случае пересылка OpenVPN-сервера) и до сих пор не столкнулся с какими-либо проблемами.


У меня тоже была эта проблема и я использовал serveo.net даже проще, чем ngrok. Абсолютно бесплатно, 0 конфиг просто вставьте в команду 22 порта с пользовательским псевдонимом, а затем подключитесь.
Мадхава Джей

3

Частично ваша проблема может заключаться в том, что, поскольку Pi использует динамический IP-адрес от DHCP на вашем маршрутизаторе, настроенная вами переадресация портов не работает, так как локальный IP-адрес Pi изменился.

Самый простой способ исправить это (по крайней мере, что я видел) - установить статический IP-адрес. Это относительно просто, до тех пор, пока вы не возражаете разбираться в файле конфигурации. Вы можете прочитать немного подробнее здесь и здесь . Я также объясню простой способ ниже:

  1. Подключитесь к вашему Pi либо через SSH в вашей домашней сети, либо через экран, либо работает.

  2. Возьмите ручку и немного бумаги, вы будете записывать некоторую информацию.

  3. Запустите команду ifconfig. Я знаю, что вы уже запустили его, но нам нужно собрать немного больше информации о вашем локальном IP на этот раз. Это показывает информацию о вашем маршрутизаторе, бит, который вы хотите, находится после eth0 (соединение Ethernet). , , ,

    eth0      Link encap:Ethernet  HWaddr b8:27:eb:b3:fc:2c
              inet addr:192.168.1.81  Bcast:192.168.1.255  Mask:255.255.255.0
    

    Запишите следующую информацию ...

    inet addr – 192.168.1.81 (Pi's Current IP Address)
    Bcast –  192.168.1.255 (The Broadcast IP Range)
    Mask –  255.255.255.0 (Subnet Mask Address)
    

    Очевидно, что ваша информация будет отличаться от этого урока, поэтому убедитесь , что вы используете вашу информацию от ifconfigкоманды запуска на Pi.

  4. Теперь беги netstat -nrили route -n. Нам нужно:

    Адрес шлюза - 192.168.1.254 Адрес
    получателя - 192.168.1.0

  5. Теперь, когда у нас есть эта информация, мы можем отредактировать файл интерфейсов, чтобы настроить динамический IP. Беги sudo nano /etc/network/interfaces. Это должно выглядеть примерно так:

    файл интерфейсов

  6. Измените строку:

    iface eth0 inet dhcp
    

    в

    iface eth0 inet static
    

    Затем прямо под этой строкой введите следующее ( пожалуйста, обратите внимание. Вам понадобятся ваши собственные адреса, которые мы собрали выше ). , , ,

    address 192.168.1.81
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.254
    

    По сути, адресная часть - это то, что вы хотите, чтобы ваш IP был. Чем выше, тем лучше, так как меньше шансов конфликта IP. маска сети - адрес «Маски», который мы записали ранее.

    сеть - IP-адрес маршрутизатора, это адрес получателя, найденный ранее. Вы также можете взять это с вашего роутера, это должно быть где-то на стороне.

    широковещательная рассылка - адрес «Bcast», который мы записали ранее.

    gateway - это адрес шлюза, который мы нашли ранее.

    Нажмите Ctrl+ Oи либо Enterили Yа затем Enter. Как только вы это сделали, нажмите Ctrl+ X.

  7. Запустите sudo rebootи ваш IP должен быть на месте! Войдите в систему и ifconfigснова введите команду, и теперь она должна выглядеть так:

    fancyness!

Затем настройте переадресацию портов на новый статический IP-адрес, и все должно работать! Удачи!


2
Может ли человек, который проголосовал против, объяснить, почему? Я думаю, что это совершенно правильное и работоспособное решение. Я хотел бы знать, почему я могу улучшить свой ответ.
RPiAwesomeness

1
Это будет работать только в локальной сети, а не снаружи. ОП спросил, как подключиться к Пи через Интернет, а не из той же сети.
Чинмай Саруприя

Адрес, такой как 192.168.1.100, является локальным, у меня может быть 2 пи в двух разных частях города с одинаковым локальным адресом. Поэтому, конечно, я не смогу получить доступ к любому из них вне сети.
Чинмай Саруприя

Если вы назначаете вашему RPi статический IP-адрес, вы должны исключить его из пула DHCP, в противном случае другое устройство в вашей сети может получить его, и у вас будет конфликт IP.
Дмитрий Григорьев

2

Кажется, единственное, что вы неправильно настроили, - это то, что SSH - это протокол только для TCP, поэтому вам не нужно пересылать трафик UDP через порт 22.

Теперь, почему это не работает, вероятно, потому что ваш маршрутизатор не поддерживает обратную петлю NAT . Это означает, что правила NAT (такие как правило переадресации) не применяются, если источник соединения находится в вашей внутренней локальной сети. Не на всех маршрутизаторах эта функция включена. Таким образом, если ваш маршрутизатор не поддерживает обратную петлю NAT, вы не сможете подключиться к вашему RPi с помощью SSH при использовании доменного имени no-ip.com и при выполнении его из локальной сети .

Чтобы проверить, работает ли ваша конфигурация, если у вас есть смартфон с каким-либо подключением для передачи данных (3G, LTE и т. Д.) И на нем есть ssh-клиент, попробуйте подключиться к RPi, используя тарифный план, а не подключение WiFi. Если у вас нет ssh-клиента и вам разрешено использовать модем, тогда используйте свой смартфон вместе с одним из своих компьютеров, отключив его для локальной сети и используя вместо него ссылку модема.


0

Попробуйте использовать бесплатное доменное имя, например co.cc или аналогичное, и freeDNS (они также предоставляют широкий спектр поддоменов) для указания на ваш маршрутизатор. Я думаю, вы также можете получить скрипт обновления, если у вашего роутера динамический IP.

Если это не сработает, возможно, настройки переадресации вашего порта неверны? Какой у вас роутер?


Try using a free domain name...Он так и сделал, вот что такое no-ip клиент. Это гораздо проще, чем возиться с ручным DNSing и маршрутизаторами.
RPiAwesomeness

@RPiAwesomeness Извините, не знал этого.
Самади

Нет проблем. Я просто выполнял свой долг быть членом Stack Exchange и модерировать сайт. Это всего лишь немного полезной критики. Пожалуйста, не воспринимайте это как нападение на вас, я просто стараюсь сделать содержание этого сайта полезным и информативным. Пожалуйста, продолжайте пытаться помочь, отвечать на вопросы и участвовать, вы начнете получать его. :) Кроме того, время от времени заходите в чат. Люди, которые по-своему любят компанию, и это показывает, что этот сайт полезен, процветает и имеет хорошую, вовлеченную базу пользователей.
RPiAwesomeness

0

У меня есть такая ситуация здесь, в Финляндии: rpi подключен к мобильному маршрутизатору Wi-Fi, huawei e5776, и я хочу подключиться к rpi через SSH через Интернет, но пока безуспешно, и, наконец, я знаю, что мой интернет-провайдер блокирует двусторонние соединения для клиенты мобильной широкополосной связи. Двусторонний трафик для них - это дополнительная услуга (за которую вы должны платить), которую мой провайдер называет открытыми воротами. Так что зайдите на свой сайт интернет-провайдера, чтобы узнать, так ли это.


0

Slubbix указал на возможную проблему, заключающуюся в том, что локальный IP-адрес Raspberry Pi не является фиксированным. Это сделает переадресацию порта в вашем маршрутизаторе ненадежной. По умолчанию Raspberry Pi настроен на использование DHCP. Это означает, что IP-адрес предоставляется маршрутизатором. Этот IP по умолчанию также не зафиксирован.

Slubbix уже указал на одно решение этой проблемы : сделать IP-адрес Raspberry Pi фиксированным.

На мой взгляд, у этого есть два недостатка: в вашей сети нет глобального списка IP-адресов, который легко обслуживать, и вы не можете использовать Raspberry Pi в другой сети (IP-адрес уже используется или другая подмаска).

Поэтому я предлагаю сделать следующее: настроить маршрутизатор для назначения фиксированного IP-адреса MAC-адресу вашего Raspberry Pi. MAC-адрес можно найти с помощью командыifconfig


0

Локальный IP-адрес вашего Raspberry Pi не является фиксированным, если вы не используете для подключения беспроводной адаптер, который сохранит свой IP-адрес. Если вы хотите использовать SSH для RPI, вы можете использовать эти шаги:

Запустите свой Pi до терминала. Введите следующую команду «sudo apt-get install xrdp». Если предложено, введите свой пароль (по умолчанию «raspberry»). Введите «Y» и нажмите enter. Теперь он устанавливает xrdp на ваш Pi, который мы будем использовать для подключения к удаленному рабочему столу. Подождите, пока это не завершится. Перезагрузите свой пи. Мы собираемся проверить, что xrdp запускается автоматически. Когда ваш Pi загрузится в командную строку, найдите [ok] Запуск сервера протокола удаленного рабочего стола: xrdp sesman. Это показывает, что xrdp установлен и автоматически запускается при запуске вашего Pi. Последний шаг - записать IP-адрес вашего Pi, который также должен отображаться на экране запуска. В моем случае ниже это 192.168.1.9.

Настройка второй машины

  1. Запустите подключение к удаленному рабочему столу, которое можно найти в Пуск-> Все программы-> Стандартные-> Подключение к удаленному рабочему столу.
  2. Введите IP-адрес вашего Pi, который вы указали выше.

  3. Нажмите «Подключиться» (на этом этапе вы можете получить предупреждение о безопасности, просто нажмите «ОК». В конце концов, это ваш Pi в вашей сети, поэтому не стоит беспокоиться о безопасности).

  4. Оставьте модуль по умолчанию sesman-Xvnc и введите свое имя пользователя и пароль для своего Pi. (По умолчанию это пи и малина, если вы их не меняли).

  5. Нажмите OK, и через несколько секунд вы должны встретить мой рабочий стол вашего Raspberry Pi!

  6. Когда вы закончите, просто выйдите из рабочего стола Pi.

Я нашел эти шаги отсюда, и они работали на меня

Вот еще один способ использования SSH:

SSH в Raspberry Pi Я обычно захожу в Raspberry Pi через SSH или Secure Shell, чтобы дать ему полное имя. Это позволяет доступ к командной строке вашего Raspberry Pi с другого компьютера. Несмотря на то, что SSH в Raspberry Pi возможен из любой точки мира, и я это делаю, этот пост охватывает только доступ SSH через локальную сеть. Я расскажу об удаленном подключении в следующем посте.

Хотя это не дает доступа к графическому интерфейсу пользователя (GUI), доступ к командной строке обычно позволяет мне делать 95% того, что мне нужно. Другие 5% я мог бы, вероятно, сделать через SSH, но иногда вы не можете превзойти комфорт GUI. :-)

Прежде всего вам нужно знать IP-адрес Raspberry Pi, в который вы хотите войти. Если вы не знаете, как найти это, прочитайте мой пост в блоге, объясняющий, как вы можете сделать это удаленно, используя отличный инструмент под названием nmap.

Подключить SSH к Raspberry Pi с компьютера Linux или Apple Mac очень просто. Вы можете просто ввести свое имя пользователя и IP-адрес в командной строке, используя следующий формат:

ssh username @ IPaddress

Убедитесь, что вы заменили имя пользователя именем пользователя, с которым хотите войти на удаленный компьютер. IP-адрес должен иметь формат 192.168.1.66

Вы можете получить сообщение, объясняющее, что подлинность хоста не может быть установлена, и если вы уверены, что хотите продолжить соединение. Вы увидите это сообщение только при первом включении SSH в Raspberry Pi. Просто введите да.

Затем вам будет предложено ввести пароль, введите пароль для имени пользователя, с которым вы пытаетесь соединиться.

Для Windows это немного сложнее настроить, так как для этого требуется дополнительный программный продукт под названием PuTTY. Однако после установки это действительно просто в использовании.

Сначала зайдите на сайт PuTTY, www.putty.org, загрузите и установите программное обеспечение.

После установки загрузите PuTTY

В поле Имя хоста (или IP-адрес) введите IP-адрес, к которому вы хотите подключиться. Выберите переключатель SSH. В поле «Сохраненные сеансы» введите имя для идентификации этого компьютера, например Raspberry Pi, и нажмите «Сохранить». Нажав на Open, вы должны начать сеанс SSH.

В следующий раз, когда вы захотите использовать SSH в Raspberry Pi, вам просто нужно загрузить PuTTY, щелкните сохраненный сеанс, чтобы выделить его, а затем нажмите «Открыть». После того, как вы ввели свой пароль, когда вас спросят, вы получите удаленный доступ к вашему Raspberry Pi.

Я нашел эти инструкции здесь


Я не вижу, как эти инструкции помогают получить доступ к RPi через Интернет
Дмитрий Григорьев

0

Одна вещь, которую я заметил для своего интернета, это то, что когда я переадресовываю свой веб-сервер и пытаюсь подключиться к нему с помощью моего публичного IP-адреса, он говорит, что он недоступен, но когда я подключаюсь к нему на своем телефоне или в сети моих школ Я могу подключиться к нему, также вы можете попробовать зайти в Google и ввести «IP» в строку поиска, скопировать IP-адрес, который он вам дает, а затем перейти на Google Translate и вставить в свой IP, и затем нажмите на синий IP-адрес в правом окне, и это должно показать вам, если вы успешно перенаправили ваш веб-сервер.


0

Чтобы разрешить входящий трафик через порт SSH по умолчанию (22), вы можете указать iptables разрешить вход всего трафика TCP на этот порт.

sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT

Возвращаясь к списку выше, вы можете увидеть, что это говорит iptables:

  1. добавить это правило в цепочку ввода ( -A INPUT), чтобы мы смотрели на входящий трафик
  2. проверьте, является ли это TCP ( -p tcp).
  3. если это так, проверьте, поступает ли вход в порт SSH ( --dport ssh).
  4. если так, примите вход ( -j ACCEPT).

Надеюсь , что это работает для вас и вы можете добавить FTP - порты , которые 20-21, просто изменить sshк 20и 21.


0

Я не уверен, что на этот вопрос нужны дополнительные ответы, но это довольно просто.

  1. Установите OpenSSH или включите его из raspi-config

  2. Перейдите на домашнюю страницу вашего маршрутизатора / брандмауэров в моем случае 192.168.1.1

  3. Найдите переадресацию портов или виртуальные серверы и добавьте что-то вроде следующего:

    Начало внешнего порта: 1234 Окончание внешнего порта: 1234

    Начало и конец внутреннего порта 22.

    IP-адрес сервера - это статический IP-адрес вашего RPi в моем случае 192.168.1.50

  4. Как только все настроено на стороне маршрутизатора, запишите ваш WAN IP, выполнив поиск вашего IP в Google.

  5. Теперь вы должны быть в состоянии SSH к пи через Интернет. В моем случае я использую Chromebook и надёжную оболочку. Я ввожу имя пользователя в моем случае pi@mywanipи порт 1234.

В основном правило брандмауэра на шаге 3 перенаправляет весь трафик через порт 1234 IP WAN на порт 22 IP внутренней сети.


-1

Я много боролся с настройкой SSH через интернет, пока не нашел этот простой метод:

http://raspctl.com

Просто зарегистрируйтесь и скопируйте и вставьте команды. Возможно, вам придется отредактировать файл конфигурации, но это все. Я проверял это сегодня, и он работает как шарм. Я тоже пробовал это делать с разными приложениями SSH для Android.


Забыл упомянуть: установите переадресацию портов на вашем роутере!
alkopop79

1
К вашему сведению: этот проект, похоже, был прекращен.
Бобстро
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.