SSH на домашні комп’ютери


21

У мене вдома є кілька машин, до яких я хотів би отримати доступ зі школи за допомогою SSH та VNC. Для цього я дав їм статичні IP-адреси:

  • 192.168.1.50: Windows
  • 192.168.1.51: Ubuntu
  • 192.168.1.52: Raspberry Pi / Raspbian

Я знаю, що SSH використовує порт 22, тому я можу переслати цей порт на 192.168.1.51:22 на моєму маршрутизаторі, але таким чином я не зможу SSH на свій Raspberry Pi. Чи є спосіб, щоб я міг це налаштувати, щоб мати доступ до обох машин?


10
Ви можете використовувати різні порти ssh. Я не знаю, наскільки складно це в Windows, але в Linux можливо все просто змінити на нестандартний порт . Таким чином, ви можете переслати порт 22, щоб виграти машину (ніяких змін там немає), а інший порт (нестандартний) до RaspberryPi.
бістоко

2
@Melebius, це старе, але все-таки хороше читання, для мене ключовою частиною є "Основний аргумент, який я намагався зробити: не робити безпеку через невідомість". Це питання про необхідність і легко вирішити це. . При цьому, можливо, йому не доведеться змінювати порти ubuntu або pi, просто перенаправляйте різні порти маршрутизатора на кожен 22 порт машини.
бістоко

1
@bistoco Погоджуюся. Однак ОП збирається відкрити доступ SSH до зовнішнього світу, і безпека повинна завжди враховуватися в такому випадку. Також встановлення різних портів на комп'ютерах не вирішує проблему ОП, оскільки йому потрібно включити різні порти (= переадресація портів) на своєму маршрутизаторі.
Мелебій

6
@Melebius Off topic, але я ніколи не використовую 22, тільки тому, що автоматизовані боти не будуть стукати на мій сервер 24/7. Це не дозволить уникнути справжнього зловмисника (або добре написаного сценарію), але це зменшить кількість моїх записів у журналі.
Каз Вулф

4
Ви можете просто підключитися до однієї з них (тієї, яка є загальнодоступною), а потім підключитися від цієї, використовуючи локальну адресу до іншої.
tkausl

Відповіді:


32

Якщо у вас IPv6, вам навіть не потрібно переадресація портів! Просто отримайте свою постійну IPv6-адресу (виходячи з MAC-адреси, тому гарантовано будете залишатися такою ж, якщо ваш Інтернет-провайдер не знає, як працює IPv6) і використовуйте це для тунелю. Оскільки ваша IPv6-адреса є загальнодоступною та дозволяє світові щоб отримати доступ до вас, не проходячи локальний NAT, вам не потрібно турбуватися, щоб активувати переадресацію портів куди завгодно. Це буде "просто працювати".

Зауважте, що IPv6 все ще не підтримується глобально, і для вашого домашнього підключення до Інтернету та для віддаленого Інтернету потрібно мати повноцінний IPv6 для цього.

Однак якщо ти, як і більшість людей, і маєш лише IPv4, є спосіб! Деякі маршрутизатори дозволяють пересилати конкретні порти джерела до конкретних портів призначення, наприклад:

введіть тут опис зображення

У цьому прикладі порт 22передаються безпосередньо до моєї машині sheepdog, в той час як порт 292перенаправляються на порт 22на coyote.

Нарешті, якщо ваш маршрутизатор не має цієї функції, ви можете просто змінити порт, оскільки SSH не обмежується лише запуском на порт 22. Ви можете встановити його на все, що завгодно (це не використовується).

У /etc/ssh/sshd_config(вам потрібно редагувати root, отже sudo nano /etc/ssh/sshd_config), у верхній частині файлу є рядок:

# What ports, IPs and protocols we listen for
Port 22

Змініть це на все, що завгодно:

# What ports, IPs and protocols we listen for
Port 2992

Перезавантажте SSH-сервер за допомогою sudo service ssh restartта переадресуйте порт на маршрутизаторі.


Однак, для цього випадку використання, я б розглядав, чи тунелі SSH - це правильна річ. Можливо, вам слід налаштувати виділений сервер VPN у домашній мережі? Це дозволить отримати доступ до всієї домашньої мережі з будь-якого місця, за умови наявності належних даних безпеки, необхідних VPN. Крім того, є трохи менше накладних витрат з VPN; вам зазвичай потрібно переслати лише один порт для однієї машини.


2
Ви можете використовувати тунельний посередник IPv6, щоб отримати адреси IPv6, якщо ваш Інтернет-провайдер не підтримує IPv6.
Андре Борі

1
Під цією функцією ви маєте на увазі переадресацію порту на інший порт?
Лю Сіюань

@LiuSiyuan Yep. Я знаю, що це дивно, але я бачив деякі маршрутизатори, які не впораються з цим. Мій старий маршрутизатор, наданий провайдером, навіть не міг спробувати.
Каз Вулф

DId не зовсім отримає цю частину IPv6. Чи можемо ми припустити, що всі провайдери, що надають адреси IPv6, дають вам (послідовний) інший для кожного пристрою в мережі?
jjmontes

1
@jjmontes Якщо ваш Інтернет-провайдер є компетентним, ви отримаєте повний / 64 (а може і менше, але все одно достатньо, щоб призначити його на кожну машину)
Kaz Wolfe

19

Простий спосіб вирішити цю проблему - зіставити різні порти від маршрутизатора до порту 22 ваших машин. Наприклад, у маршрутизаторі можна встановити такі налаштування (якщо ваш маршрутизатор має IP-адресу 1.2.3.4)

1. 1.2.3.4:22   --> ubuntu:22
2. 1.2.3.4:8888 --> raspberrypi:22
3. 1.2.3.4:9999 --> windows:22 (or some other port)

Потім, використовуючи ssh, вкажіть порт, який ви хочете використовувати, ввівши

$ ssh <username>@<router ip> -p <your port>

Тепер ви маєте змогу підключитися до всіх своїх машин.


11

Якщо ви знаєте, що один з ваших комп'ютерів завжди працює, у вас також є можливість використовувати його як ssh-проксі.

скажімо, у вас є налаштування доменного імені для вашої зовнішньої IP-адреси (наприклад, myhome.dyndns.com чи будь-чого іншого), що ви зробите, це підключитись до одного комп’ютера (скажімо, малиновий файл завжди готовий, і ви пересилаєте порт з маршрутизатора на це), ваші ssh-з'єднання будуть:

школа -> (маршрутизатор, прозорий тут) -> малиновий -> ubuntu або windows

тепер додайте у свою ~ / .ssh / config у школі рядки:

Host ubuntu 192.168.1.51
    Hostname ubuntu (change to match your setup)
    User myraspberryuser  (change it ;-) )
    IdentityFile ~/.ssh/id_rsa   (The path to your private key, on the school computer, better on an usb key if public computer)
    ForwardAgent yes
    RequestTTY yes
    ProxyCommand ssh -W %h:%p %r@myhome.dyndns.com

Щоб підключитися тоді:

ssh-add ~/.ssh/id_rsa # to do only once per session
ssh myuser@ubuntu (login without password)

Відтепер, якщо ви введете ssh ubuntu, комп'ютер спочатку підключиться до малини, а потім розпочне сеанс ssh до комп'ютера ubuntu.

Я рекомендую вам, незалежно від того, який порт ви вирішите переслати, відключити пароль у /etc/sshd.conf, щоб дозволити входити лише через ключ ssh. Таким чином, якщо ви встановите ключ на малину та ubuntu, за допомогою параметра «ForwardAgent», вам доведеться лише розблокувати ключ, і тоді для підключення не потрібно вводити пароль. Таким чином, навіть якщо боти намагаються увійти у ваш ssh, вони ніколи не зможуть увійти, оскільки ви забороняєте вхід пароля.

Бонус, це також працює з scp, scp foo ubuntu: / tmp / foo буде використовувати ту саму програму без додаткових параметрів. Бонус 2, ця налаштування не потребує змін вдома, якщо завтра ви та інший комп'ютер просто скопіюйте / вставте код у свій ssh-конфігурацію, змініть хост і ip, ось все, не потрібно відкривати новий порт на маршрутизаторі


Чи є якісь недоліки використання машини як проміжного для SSH? Скажімо, я використовую свій Raspberry Pi для підключення до інших комп’ютерів всередині мережі, чи вплине його виконання на завдання?
acourchesne

1
Так, малина може обмежити пропускну здатність, оскільки вона повинна виконувати функції сервера та клієнта. Якщо ви досить впевнені, ви можете досягти такого ж результату за допомогою ssh тунелів. Таким чином, малина виступає лише як сервер, але ваш шкільний ПК повинен робити двох клієнтів.
potens

4

Я роблю це - я залишаю rpi вгору і весь час підключаюсь до маршрутизатора (оскільки це найдешевший запуск) і просто забиваю в нього, а потім відскакую від нього іншим - це ніколи не потребує великої уваги.

Також можна VNC / RDP користувальницьким інтерфейсом користуватися графічним інтерфейсом через ssh-трубу, щось весело або пересилати порт, який дозволяє переглядати сервер на настільному комп’ютері, зберігаючи його приватним.

Тому, що я додав цю відповідь, я даю вам кілька пропозицій.

1) Використовуйте інший порт, ніж 22. Ви можете залишити його 22 на PI, але змінити вхідний порт на маршрутизаторі на щось більше 10 000 ... Інакше ви отримаєте десятки до сотні атак на день - і як тільки ви відомо, що він працює за допомогою SSH-хоста, коли знайдеться другий експлойт, у вас є власність.

2) Використовуйте сертифікати замість імені користувача / пароля - повністю відключіть ім'я користувача / пароль.

3) Якщо ваша ip-адреса може змінитися, скористайтеся послугою типу dyndns, щоб отримати собі хост-код DNS (я використовую noip, це безкоштовно, і вони підтримують клієнт Linux для оновлення вашої ip-адреси - я думаю, ви можете просто підходити - запустити його пі зараз). Є ще кілька інших компаній, які пропонують це безкоштовно.

4) Слідкуйте за тим, щоб ваш пі (або все, що ви вділили) оновлений (sudo apt-get update). Я вважаю, що ssh зараз досить добре перевірена, але я також вважала, що https ...


3

Була сумніватися, чи підходить це як коментар, а не відповідь, але я все-таки опублікую його тут.

Про це варто подумати, перш ніж робити це:

  1. Ви відкриєте свої системи в Інтернеті, тож краще переконайтеся, що вони добре закріплені, а ваша конфігурація безпеки посилена (наприклад, не дозволяйте входити в корінь і не використовуйте pubkeys замість паролів).
  2. Ваш загальнодоступний IP (див. Whatismyip.com) може змінюватися, залежно від вашого провайдера, він може змінюватися щодня або майже ніколи. Це означає, що вам доведеться знайти спосіб з'ясувати ваш загальнодоступний IP. Ви можете щодня відвідувати whatismyip.com зі своєї домашньої мережі, створювати якусь програму або використовувати Dynamic DNS (DynDNS), щоб зіставити змінений загальнодоступний IP-код до статичного доменного імені.
  3. Якщо ви хочете використовувати IPv6, щоб обійти всі клопоти, пов’язані з IPv4 та NATING, вам знадобляться також ваші пристрої, маршрутизатор, провайдер, ... щоб поспілкуватися з IPv6. Є деякі сервіси, які можуть допомогти вам, коли ваш Інтернет-провайдер не підтримує IPv6, але ваші пристрої та маршрутизатор повинні все-таки говорити про це.
  4. Чим більше портів та пристроїв ви відкриєте для Інтернету, тим більшою стає ваша атака. Я б запропонував використати стрибок у вашій мережі та дозволити SSH отримати доступ до цього пристрою з Інтернету. Перехідна скринька в основному буде однією з дуже загартованих систем, які ви переносите через ваш маршрутизатор в Інтернет. Підключившись до цього вікна, ви зможете через нього встановити SSH у вашу внутрішню мережу. В основному стрибок може бути ще одним Raspberry Pi. Я б запропонував використовувати спеціальний пристрій, щоб мати можливість максимально загартувати його (серед інших, запустивши якомога менше служб).
  5. (4a) Замість того, щоб у вас було SSH, ви також можете створити VPN-сервер, який дозволяє переглядати домашню мережу зі свого пристрою в школі (якщо вихідні VPN-з'єднання дозволені).
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.