Налаштування SSH через Інтернет на моєму Pi


16

Це може бути простим питанням, але, оскільки я читав суперечливу інформацію з кількох ресурсів (що? Протиріччя в Інтернеті?), Я хотів знати, чи роблю я все, що повинен був.

Тому я хочу встановити SSH-з'єднання до свого RasPi, щоб я мав доступ до нього через Інтернет.

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

Після цього я не можу здатися SSH своєму pi через Інтернет. Це працює, коли я намагаюся підключитися всередині моєї локальної мережі за допомогою свого локального ip, але не використовуючи ім'я хоста чи ip адресу Інтернету. Я також спробував підключитися з іншого місця, і нічого не працює.

Моє запитання: я пропускаю якісь дії? Чи є файли конфігурацій, які я повинен редагувати на моєму пі, щоб все працювало?


Будь ласка, включіть висновок iptables -Lна Pi.
deed02392

1
Ви вирішили це питання ще? Якщо так, чи можете ви позначити відповідь, яка її вирішила, або створити самовідповідь із зазначенням того, що ви зробили, а потім позначити це як відповідь? Це було б чудово, оскільки ми намагаємося створити сайт Q: Коефіцієнт, і це питання, здається, залишається на певний час не торканим вас @Zeta. Спасибі!
RPiAwesomeness

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

Це дуже схоже на маршрутизатор, який не підтримує цикл NAT.
пластівці

Я знайшов це посилання: 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 був. Чим вище, тим краще, оскільки менше шансів виникнення конфліктів із ІС. netmask - адресу "Маски", яку ми записали раніше.

    мережа - IP-адреса маршрутизатора, це адреса "Місце призначення" було знайдено раніше. Ви також можете схопити це з маршрутизатора, він повинен десь сказати збоку.

    трансляція - адресу "Bcast", яку ми записали раніше.

    шлюз. Це адреса "шлюзу", яку ми знайшли раніше.

    Натисніть Ctrl+ Oі Enterабо, Yі потім Enter. Після цього натисніть Ctrl+ X.

  7. Запустіть sudo rebootі ваш IP повинен бути на місці! Увійдіть знову та запустіть ifconfigкоманду ще раз, і вона повинна виглядати приблизно так:

    фантазії!

Потім налаштуйте переадресацію порту на новий статичний IP-адрес, і він повинен працювати! Удачі!


2
Чи може людина, яка голосує з голосом, пояснити, чому? Я думаю, що це цілком справедливе і працездатне рішення. Я хотів би знати, чому я можу вдосконалити свою відповідь.
RPiAwesomeness

1
Це працюватиме лише в локальній мережі, а не ззовні. ОП запитала, як підключитися до Pi через Інтернет, а не з тієї ж мережі.
Chinmay Sarupria

Адреса на зразок 192.168.1.100 - це місцева адреса, я можу мати 2 Pi в двох різних частинах міста з однаковою місцевою адресою. Тож, звичайно, я не зможу отримати доступ до жодної з них поза мережею.
Chinmay Sarupria

Якщо ви надаєте 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". Якщо буде запропоновано, введіть свій пароль (за замовчуванням - "малиновий") Введіть "Y" і натисніть клавішу Enter. Тепер це встановлення xrdp на ваш Pi, який є програмним забезпеченням, яке ми будемо використовувати для підключення до віддаленого робочого столу. Зачекайте, коли це завершиться. Перезавантажте 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. Натисніть кнопку ОК, і через кілька моментів вас привітають робочий стіл вашого Raspberry Pi!

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

Я знайшов цей крок звідси, і вони працювали на мене

Ось ще один спосіб використання SSH:

SSH в Raspberry Pi Я зазвичай входжу в свій Raspberry Pi через SSH або Secure Shell, щоб дати йому повне ім'я. Це дозволяє отримати доступ до вашого Raspberry Pi з іншого комп'ютера в командному рядку. Хоча SSH в Raspberry Pi можливо з будь-якої точки світу, і я це роблю, але ця публікація охоплює лише доступ до SSH через локальну мережу. Я буду висвітлювати віддалений зв’язок у майбутній публікації блогу.

Хоча це не дає доступу до графічного інтерфейсу (графічного інтерфейсу користувача), доступ до командного рядка, як правило, дозволяє мені робити 95% того, що мені потрібно зробити. Інші 5%, можливо, я міг би зробити через SSH, але іноді ви не можете перемогти комфорт GUI. :-)

Перш за все вам потрібно знати IP-адресу Raspberry Pi, яку ви хочете увійти. Якщо ви не знаєте, як це знайти, то прочитайте мій пост у блозі, де пояснюється, як це можна зробити віддалено, використовуючи чудовий інструмент під назвою nmap.

Перевести SSH у ваш Raspberry Pi з комп’ютера Linux або Apple Mac це дуже просто. Ви можете просто ввести своє ім'я користувача та IP-адресу в командному рядку, використовуючи наступний формат:

ssh ім'я користувача @ IPadress

Переконайтеся, що ви замінили ім’я користувача на ім’я користувача, яким ви хочете увійти у віддалений комп'ютер. IP-адреса повинна мати формат 192.168.1.66

Ви можете отримати повідомлення, що пояснює, що автентичність хоста неможливо встановити, і якщо ви впевнені, що хочете продовжувати з'єднання. Це повідомлення ви побачите лише при першому вході SSH у свій Raspberry Pi. Просто введіть так.

Тоді вам буде запропоновано пароль, введіть пароль для імені користувача, з яким ви намагаєтесь зв’язатися.

Для вікон це налаштування трохи складніше, оскільки це вимагає додаткового програмного забезпечення під назвою 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 WAN IP на внутрішній порт IP IP 22.


-1

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

http://raspctl.com

Просто зареєструйте та скопіюйте команди та вставте їх. Можливо, вам потрібно буде відредагувати конфігураційний файл, але це все. Я протестував це сьогодні, і він працює як шарм. Я спробував це і з різними SSH-програмами для Android.


Забув згадати: встановіть переадресацію порту на маршрутизаторі!
alkopop79

1
FYI: Схоже, цей проект припинено.
bobstro
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.