Як користуватися SSH поза домашньою мережею


16

Нещодавно я встановив SSH на своєму Raspberry Pi. Це пройшло плавно, тим більше, що я можу керувати комп'ютером через свій iPhone за допомогою програми " Аудитор сервера" . На жаль, це працює лише через локальну мережу.

Як я можу змусити SSH працювати, коли я виходжу з дому? (Переважно працює з додатком.)


чи можете ви переслати порт від маршрутизатора?
SteveIrwin

1
@SteveIrwin я, швидше за все, можу, але, оскільки я не грамотний в мережі, я вважаю за краще таке просте рішення, як Port Map . Насправді ... якщо я поділюсь Інтернетом свого Mac з моїм Pi, чи зможу я поділитися пересланими портами?
xxmbabanexx

1
налаштування переадресації порту, мабуть, принаймні так просто, як використання карти Port. Вам потрібно розповісти більше про те, як налаштована ваша локальна мережа
Джон Ла Руй

Ваша найкраща ставка - встановити сервіс Weaved (www.weaved.com) і зробити це з ним. Усі інші навчальні посібники, які ви знайдете в Інтернеті, приведуть вас до невдалого шляху.
ІгорГанапольський

для публікації, яка пропонує використання socketxp, використовуйте наступне, щоб завантажити socketxp на RPI curl -O portal.socketxp.com/download/arm/socketxp && chmod + wx socketxp && sudo mv socketxp / usr / local / bin замість linux файл.
jeonghoon

Відповіді:


20

Ось кроки, які я використав (на debian), які можуть вам бути корисними.

1.Встановлення статичного IP для Pi.

a. Відкрийте файл інтерфейсів за допомогою команди

sudo nano /etc/network/interfaces

b.Змініть файл інтерфейсів на наступне (для мене це працює. Я не впевнений, чи можна виключити кілька рядків).

auto lo
iface lo inet loopback
iface eth0 inet static
address 192.168.1.2  #static ip you want for the pi
netmask 255.255.255.0
gateway 192.168.1.1    # the ip address of the router

c.Check якщо Ip змінений з допомогою IFCONFIG команди

2. Налаштування динамічного DNS

Швидше за все, IP-адреса, призначена вашим Інтернет-провайдером, динамічна, тому нам потрібен спосіб вирішити зміни в IP-адресі. Для цього я використовую програмне забезпечення dnsdynamic та ddclient.

a.Реєстрація для облікового запису з dnsdynamic

b.Додайте новий домен та виберіть ім’я та домен зі списку. Ви можете обрати будь-який із доступних доменів за вибором субдомену.Натисніть на наявність перевірки та додайте

dnsdynamic скріншот

3. Установка ddclient на Pi

a.Установіть ddclient за допомогою команди

sudo apt-get install ddclient

b. Відкрийте файл конфігурації для ddclient за допомогою наступної команди та додайте наступні рядки.

sudo nano /etc/ddclient.conf

і змінити файл на наступне.

# /etc/ddclient.conf
daemon=600
timeout=10
ssl=yes
protocol=dyndns2
use=web, web=myip.dnsdynamic.com
server=www.dnsdynamic.org
login=x@gmail.com  #userid for dnsdynamic.com
password='xxxx'      #password for the same put inside quotes
x.dnsdynamic.com  #the domain name you created

і збережіть файл.

d.Ми хочемо, щоб послуга ddclient запускалася автоматично при перезавантаженнях. Зробіть наступне.

sudo nano /etc/rc.local

Додайте таку команду перед виходом 0 (це останній рядок)

sudo /usr/sbin/ddclient -daemon 600 -syslog

Збережіть файл. Щоб запустити ddclient, або перезавантажте файл pi, або виконайте вищевказану команду підказки. Він буде постійно оновлювати ваше доменне ім’я, змінюючи поточну IP-адресу, коли це необхідно.

4.Порт експедирування

a. Знайдіть модель вашого маршрутизатора.

b.Go в portforward.com

c.Введіть свою марку та модель маршрутизатора, щоб знайти детальне керівництво порту переадресації.

d.Забравши марку та модель маршрутизатора, натисніть посібник за замовчуванням на перенаправленій сторінці.

напр., у текстове поле Static Ip введіть статичний IP- код Pi, який ви вказали на кроці 1.

f. Дотримуйтесь кроків та перехідного порту 22. Порт джерела повинен бути 22, а порт призначення може бути будь-яким. Будь ласка, не забудьте використовувати Порт призначення, коли натискаєте на pi. Щоб уникнути плутанини, я, як правило, використовую те саме джерело та призначення порт.

Якщо ви дотримувалися підручника, увійдіть до свого pi з будь-якого місця, використовуючи заміну ip-адреси на доменне ім’я. Наприклад, я використовую pi@hometorrent.dnsdynamic.com: 22, щоб ssh в мою пі.


Дуже дякую! Коли я повернусь із відвідування Ексетера, я спробую це!
xxmbabanexx

+1 Великий відповідь, проте, вам дійсно потрібно використовувати sudoв /etc/rc.local, що не то, що вже працює як корінь?
HeatfanJohn

Таким чином, повністю накрутив мою конфігурацію Ngrok і Weaved. Зараз я взагалі не можу підключитися!
ІгорГанапольський

2

Спочатку вам потрібно налаштувати переадресацію портів. Кожен маршрутизатор дещо інший, тому вам доведеться шукати особливості вашого маршрутизатора.
Існують загальні посібники для переадресації портів, які можуть працювати для більшості маршрутизаторів, але я б запропонував знайти керівництво для вашої фактичної моделі маршрутизатора.

Встановіть пам’ятний порт для посилання на ваш малиновий пі, наприклад, 23456 або щось подібне. Будьте обережні, щоб не перезаписати загальні номери портів .

Нарешті, за допомогою ssh виконайте наступне:

$ ssh -p 23456 user@IP

Де:


Чому я не можу використовувати порт 22 замість користувацького 23456?
ІгорГанапольський

1
@IgorGanapolsky ви можете це зробити, але 1) якщо у вас є інший комп'ютер, до якого ви хочете підключитися через SSH за межами вашого будинку, виникне конфлікт та 2) більш ризиковано, оскільки багато "хакерів" намагаються увійти через порт 22 , тому його закриття часто рекомендується на серверах
meneldal

2

Доступ до вашого RaspberryPi (або навіть ноутбуків / серверів) за межами домашньої мережі (мається на увазі, з Інтернету) - непросте завдання, оскільки ваш домашній ноутбук або RaspberryPi має лише локальну IP-адресу (в діапазоні 10.xxx або 192.168.xx дальність). У ньому немає публічної IP-адреси, яку можна побачити в Інтернеті.

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

SocketXP забезпечує простий, безпечний і простий спосіб отримати доступ до вашого домашнього RaspberryPi з зовнішньої мережі. SocketXP не вимагає, щоб ви зламали будь-які налаштування у вашому Wi-Fi роутері. Це працює з коробки. Щоб знати, як налаштувати RaspberryPi на SSH ззовні, прочитайте цей блог про те, як віддалити SSH у ваш RaspberryPi за допомогою SocketXP.

Як налаштувати SocketXP:

Крок 1 : Встановіть клієнт SocketXP на ваш RaspberryPi, використовуючи наступну команду.

$ curl -O https://portal.socketxp.com/download/linux/socketxp && chmod +wx socketxp && sudo mv socketxp /usr/local/bin

Крок 2. Підключіть клієнт SocketXP до хмарної служби SocketXP за допомогою наступної команди. Вам потрібно зареєструватися за адресою https://portal.socketxp.com, щоб отримати свій унікальний аутентик.

$ socketxp -register "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDk1MTg0MDAsImlkIjoiZ2FuZXNodmVscmFqYW5AZ21ha6K208n0.cB2uYevpH4lWIQGQUJdQ0eiEDqS8OiP_YOiqernnui3rjjadfadsfsfas34"

Крок 3. Отримайте кінцеву точку відкритого тунелю для доступу до вашого RaspberryPi з Інтернету.

$ socketxp -connect tcp://localhost:22

Tunnel Access -> tunnel.socketxp.com:35277

Крок 4 : SSH у ваш RaspberryPi з Інтернету, використовуючи наступну команду.

$ ssh raspberry-username@tunnel.socketxp.com -p 35277

де "малинове ім'я користувача" - це ім'я користувача / пароль, який ви використовуєте для входу в SSH для вашого RaspberryPi.


1

Це питання давнє, оскільки з часом йде менше шансів отримати доступну для загального доступу IPv4-адресу. Швидше за все, ви стоїте за CGNAT, це означає, що ви ділитесь одним загальнодоступним IPv4 з іншими клієнтами провайдера. Отже, неможливо зробити переадресацію порту до вашого ІП або щось інше.

Якщо у вас IPv6, ви можете надати своєму PI статичну адресу та надати доступ до нього на своєму маршрутизаторі. Зараз багато мобільних провайдерів надають телефони IPv6. Старі «наземні» Інтернет-провайдери (Fiber, DSL, coax тощо) часто затягують ноги.

Ви також можете придбати дешевий VPS (віртуальний приватний сервер) з відкритим IPv4 десь у хмарі та зробити SSH-тунель від PI до VPS.


0

На додаток до відповіді Phalt, ви повинні перевірити одну з динамічних служб DNS, як-от No IP . Вони дозволяють вам отримувати доступ до домашньої мережі під статичним іменем хоста, хоча ваша IP-адреса може змінюватися щодня, через відключення від вас DSL або кабельного провайдера. У них також є приємна сторінка для початку роботи , яка також знайомить вас з відповідним налаштуванням маршрутизатора.

Ви можете встановити inadynпакет на Raspberry Pi, щоб оновити записи DNS без IP-адреси, коли зміниться IP-адреса. Це можна зробити, виконавши:

sudo apt-get install inadyn

З inadyn README я взяв цей зразок виклику:

inadyn --dyndns_system default@no-ip.com -u USER-p PASS -a HOST

Сподіваюсь, це допомагає.


У No-Ip є DUC (динамічний клієнт оновлення), який забезпечить ваш IP-адреса не зміниться.
ІгорГанапольський

0

Додатково до відповіді Стіва Ірвіна:

Крок 1:

якщо ви підключитесь через wlan, використовуйте:

iface wlan0 inet static
wpa-ssid "xxx" #<=your ssid
wpa-psk "yyy"  #<=your pw
address 192.168.1.xxx #<=preferred static ip (xxx<255)
netmask 255.255.255.0
gateway 192.168.1.1 #<=router's ip

Крок 2:

після зміни вищезазначеного вам потрібно перезапустити networking:

sudo /etc/init.d/networking restart

Я також додав 2 рядки перед статичним блоком, auto wlan0 enable-hotplug wlan0 Я знайшов це у цій публікації raspberrypi.stackexchange.com/a/10320/10148 Я також намагався зробити це без них, але щось не вийшло.
XandruCea

Цю відповідь слід вважати застарілою через зміни в конфігурації мережі Raspbian і в системі init.
золотинки

0

Крім того, деякі маршрутизатори мають вбудовану підтримку деяких служб Dynamic DNS, ви можете увімкнути цю опцію (якщо вона існує) у вашому маршрутизаторі, щоб уникнути встановлення клієнта на ваш PI (і заощадити невеликі накладні витрати під час роботи на ньому).


0

Отже, у вас є ssh-сервер (ваш Raspberry PI) за брандмауером (ваш маршрутизатор), і ви хочете підключити його з будь-якого місця. Давайте припустимо, що ваш ssh-сервер налаштований належним чином, тобто у вашому Raspberry запущено 'ssh username @ localhost date', показано поточну дату / час.

Ви повинні вирішити дві проблеми:

  • Маршрутизатор повинен переслати фіксований порт на ваш малиновий порт ssh (як правило, 22).
  • Ви мусите знати загальнодоступну ip-адресу свого маршрутизатора (яка зазвичай змінюється під час підключення маршрутизатора і стільки ж, скільки разів за 24 години).

Переадресація портів і DynDNS

Рішення існують (як уже вказували інші):

  • Відкриття переадресації порту на маршрутизаторі характерне для кожного маршрутизатора і зазвичай робиться на веб-сайті з налаштуваннями маршрутизаторів.
  • Визначити поточний ip найпростіше на зовнішньому веб-сайті ( https://www.google.com/search?q=whats+my+ip ). Якщо ваш IP-адрес змінюється регулярно, ви можете отримати динамічний запис dns ( https://www.noip.com/ , https://dyn.com/dns/ тощо).

Якщо правильно налаштовано, підключення вашого rasbperry pi можливо з:

ssh username@[yourIP] -p [port] 
# or using dyndns 
ssh username@myname.dyndns.org -p [port]

Використання sshhub.de

Ще одне дуже зручне рішення, про яке не згадувалося поки що, це SSHHub (дискламер, я автор). Він використовує власне переадресацію ssh, щоб отримати доступ до вашого Rasperry PI з будь-якого місця. Його надійний, безкоштовний і досить простий у налаштуванні . Зареєструйтесь один раз:

ssh info@sshhub.de register

запустити ваш Raspberry PI:

while true; do ssh [username]@sshhub.de -R 22:localhost:22 -N -o ServerAliveInterval=10; sleep 10; done

...і це все! Ви можете підключити Raspberry Pi з будь-якого місця:

ssh -J [username]@sshhub.de localhost

Привіт і ласкаво просимо до Raspberry Pi! Відвідайте екскурсію та відвідайте довідковий центр, щоб побачити, як тут все працює. Дякуємо за ваш внесок, але зауважте, що ми просимо розкрити свою приналежність у своїх відповідях . (Я припускаю, що ви автор рекомендованого програмного забезпечення.)
Ghanima

Дякую, що вказали на мене в правильному напрямку. Я автор. Я, безумовно, хочу надати користь своїй відповіді людям, які шукають рішення. І я сподіваюся, що моє так само добре, як і сам sshhub.
Олівер

0

Ви можете використовувати VPN, щоб дозволити вхідний доступ до вашого pi. OpenVPN - це одне рішення, для якого потрібно мати комп'ютер, доступний з Інтернету (вхідний порт). Однак, поки у вас є доступ до одного комп'ютера, інші комп'ютери не повинні бути такими, як вони можуть бути клієнтами сервера OpenVPN.

Іншим варіантом буде використання такої послуги, як ZeroTier, яка забезпечує централізовані сервери для створення VPN, тому вам не потрібно запускати власний сервер. Це також безкоштовно.


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