Підключення по ssh до windows комп’ютера через інтернет
Вітаю! Цікавить питання: як підключитися по SSH до домашнього комп'ютера через інтернет. Будинки встановлений FreeSSHd сервер. Я так розумію треба якось відкрити порт 22 на зовнішньому IP? Alex
Так, часто виникає необхідність підключитися до комп'ютера через інтернет. Я в тій статті багато про що розповідав, а тут ми будемо говорити виключно про SSH, якщо вже Alex люб'язно надав нам цю можливість. До того ж, мені самому шалено цікавий SSH, а тут ще й на Windows ... ммм.
Що таке SSH і навіщо він потрібен?
Справа в тому, що SSH - це S ecure SH ell. Протокол для безпечного доступу до оболонки управління. Тому воно надає доступ саме до командного рядка, бо Shell - перекладається як оболонка і тут в значенні текстова оболонка управління. Але взагалі, цей протокол примітний тим, що він дозволяє пропускати всередині себе будь-який інший трафік, причому в зашифрованому вигляді. Так, протокол безпечного підключення до файлової системи називається SFTP і працює поверх SSH. Але може туннелировать абсолютно будь-які інші сполуки - будь то HTTP або навіть RDP. По суті виходить «VPN на коліні».
Тут Алекс вже зробив півсправи, він встановив і запустив на домашньому комп'ютері FreeSSHd. Це дозволяє підключитися до Windows по SSH. В даному випадку - «дозволяє» - це сказано дуже сильно. Тому як це рішення працює на Віндовс абияк. По-перше, у неї немає пристойного текстового інтерфейсу - командного рядка, для управління.
Принаймні штатний - cmd - мало що дозволяє зробити з віддаленої машиною. Є ще Powershell - це вже більш сучасне і потужне рішення. Freesshd дозволяє змінити консоль на powershell, але я до неї так і не зміг підключитися. До CMD підключився - але це зовсім неюзабельно:

По-друге, у випадку з FreeSSHd у мене не вийшло підключитися до комп'ютера з Windows навіть по локальній мережі, не кажучи вже про підключення через інтернет. Вірніше, підключитися виходить, але сервіс зависає і вилітає, управляти Windows-хостом таким чином не вийде.

Завис freesshd і вилетів при підключенні
Як ще можна запустити SSH на Windows?
Є більш працездатне рішення - Powershelserver. Хоча в ньому теж є баги, але воно хоча б не вилітає. Тому я б рекомендував використовувати саме його для підключення по SSH до віндового серверів.

Скачав і встановив powershellserver
По-перше, він стабільно працює без вильотів. І через нього дійсно можна управляти windows через powershell.

Включив потрібні опції і запустив
Але самий шик - це консоль! Вона працює, панове!

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

Налаштування кодування в Powershellserver

Підключення до консолі Windows по SSH!
Тепер ми маємо повноцінний SSH і можемо повністю управляти Windows через консоль.
Microsoft створить власне рішення для SSH
До речі, Microsoft eщё влітку оголосила про те, що збирається розробити нативную підтримку SSH для Powershell в нових версіях Windows. Є анонси новини на Хабре і на pcweek (і ще). Тому нам тільки залишається чекати з нетерпінням цієї знакової події, оскільки це дійсно буде проривом для роботи в гетерогенних мережах.
Я не став перевіряти інші функції - sftp і scp, але чомусь впевнений, що вони теж будуть прекрасно працювати.
Як відкрити зовні SSH-порт?
Проброс порту на роутері або модемі
Ось так це виглядає на моєму домашньому роутере Zyxel Keenetic Lite:

Як відкрити порти для підключення зовні на Zyxel Keenetic
А ось так це виглядає на ADSL-модем c функціоналом роутера Linksys WAG200G, які опинилися під рукою:

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

Налаштування «зворотного» тунелю SSH
Такий кидок легко зробити за допомогою простого SSH-клієнта Putty (є і альтернативні ssh-клієнти) Потім можна буде підключитися на цьому самому віддаленому сервері через проброшенний порт.

Підключення Windows по SSH через зворотний тунель
Тут вийшла по суті петля. Ми відкриваємо SSH сесію з Windows на віддалений сервер, а всередині цього підключення у нас туннелируют SSH-порт самої Windows Powershellserver (або FreeSSHd) на локальний порт 3322 віддаленого сервера. І в цій же сесії ми тепер підключаємося назад до Windows на Powershell через цей самий порт 3322 ... Я сподіваюся, ви не заплуталися. Але ... This is magic, друзі. ) SSH-тунелі це особливий світ, з їх допомогою можна витворяти неймовірні штуки, відкривати такі двері, що все безпечники будуть гірко плакати, якби вони раптом дізналися про все це ... Ну да ладно.
Ну якщо вам потрібно розшарити SSH-порт вінди в світ, досить в настройках зворотного тунелю в якості destination вказати не localhost: 3322, а ip_server: 3322. Чи зможете підключатися до винде по SSH звідусіль, де є доступ до цього самого сервера.
Як перевірити чи правильно проброшен порт?
Дуже просто. Потрібно перевірити чи відкритий він. У випадку з SSH відкритий порт буде відповідати повідомленням про свою версію. Найпростіший спосіб перевірки порту - утиліта telnet.
Просто наберіть в командному рядку через пропуск:
Просто наберіть в командному рядку через пропуск:
telnet домен_ілі_IP порт
Якщо порт доступний, то ви побачите щось на зразок такого:

Відповідь SSH якщо порт доступний
Якщо порт з якихось причин недоступний - то ви побачите або «connection refused» або «connection timeout». У першому випадку це буде миттєво, і означає що порт закритий файрволом.
У другому випадку це буде схоже на «зависання» і може тривати до декількох хвилин - телнет-клієнт буде намагатися встановити з'єднання. Це може означати також блокування файрволлом, але вже іншого типу. Або просто що зазначений хост недоступний або порт на ньому закритий.
Якщо ви змогли підключитися телнетом, то натисніть комбінацію клавіш Ctrl +] і введіть quit, потім Enter. Інакше не вийде перервати сесію і доведеться відкривати нове вікно консолі, якщо вона вам ще потрібна.
- RSS-стрічки новин

- Клавіша Win або навіщо потрібна кнопка Windows

- Чи не працює пуск Windows 10

Чи не великі подробиці щодо ситуації на моєму комп'ютері: роутера і модема немає, я підключений по кручений парі відразу в ноутбук, і перебуваю за NAT провайдера, ip надається сірий динамічний, тому й хочу дізнатися як же підключиться по інтернету. Перепрошую, що відразу не написав ..
При спробі підключитися на зовнішній ip (дивився на 2ip.ru) відповідно підключення не було.
Цікавить ще питання: при підключенні по SSH тунелю, трафік відразу шифрується або на компі-сервері треба ще ставити проксі-сервер?
У Вашому випадку простіше купити доступ до персонального проксі і використовувати його для цих цілей. Вони зараз $ 1 $ 2 в місяць стоять, не більше.
Якщо ж ви хочете використовувати саме SSH-тунелі, то я б порекомендував взяти найдешевший тариф у хостера, який надає доступ по SSH. Тоді ви зможете здійснити все задумане і навіть більше. Я, наприклад, використовую дешевий безлімітний хостинг від HTS всього за 90 рублів на місяць вже четвертий рік.
Так, SSH сам по собі шифрує абсолютно все, що пропускає через себе. При використанні тунелів проксі не потрібен, бо ваш тунель сам по собі буде працювати вже як Socks-проксі. А з приводу ключів, спробуйте все ж powershelserver.