Ssh доступ через роутер

SSH Server

RouterOS has built in SSH server that is enabled by default and is listening for incoming connections on port TCP/22. It is possible to change the port and disable the server under Services menu.

Properties

Sub-menu: /ip ssh

  • no — SSH forwarding is disabled;
  • local — Allow SSH clients to originate connections from the server(router), this setting controls also dynamic forwarding;
  • remote — Allow SSH clients to listen on the server(router) and forward incoming connections;
  • both — Allow both local and remote forwarding methods.
  • prefer 256 and 192 bit encryption instead of 128 bits;
  • disable null encryption;
  • prefer sha256 for hashing instead of sha1;
  • disable md5;
  • use 2048bit prime for Diffie Hellman exchange instead of 1024bit.
  • key-file-prefix — used prefix for generated files, for example, prefix ‘my’ will generate files ‘my_rsa’, ‘my_rsa.pub’ etc.
  • private-key-file — name of the private RSA/Ed25519 key file

Enabling PKI authentication

Example of importing public key for user admin

Generate SSH keys on the client device (the device you will connect from). Upload the public SSH key to the router and import it.

/user ssh-keys import public-key-file=id_rsa.pub user=admin

SSH Client

Sub-menu: /system ssh

Simple log-in to remote host

It is able to connect to remote host and initiate ssh session. IP address supports both IPv4 and IPv6.

/system ssh 192.168.88.1 /system ssh 2001:db8:add:1337::beef

In this case user name provided to remote host is one that has logged into the router. If other value is required, then user= has to be used.

/system ssh 192.168.88.1 user=lala /system ssh 2001:db8:add:1337::beef user=lala

Log-in from certain IP address of the router

For testing or security reasons it may be required to log-in to other host using certain source address of the connection. In this case src-address= argument has to be used. Note that IP address in this case supports both, IPv4 and IPv6.

/system ssh 192.168.88.1 src-address=192.168.89.2 /system ssh 2001:db8:add:1337::beef src-address=2001:db8:bad:1000::2

in this case, ssh client will try to bind to address specified and then initiate ssh connection to remote host.

Log-in using RSA public/private key

Example of importing private key for user admin

First of all, export currently generated SSH keys to a file:

/ip ssh export-host-key key-file-prefix=admin

Two files admin_rsa and admin_rsa.pub will be generated. The pub file needs to be trusted on the SSH server side (how to enable SSH PKI on RouterOS) The private key has to be added for the particular user.

/user ssh-keys private import user=admin private-key-file=admin_rsa

Only user with full rights on the router can change ‘user’ attribute value under /user ssh-keys private

After the public key is installed and trusted on the SSH server, a PKI SSH session can be created.

Читайте также:  Настроить роутер асус rt ac51u

Executing remote commands

To execute remote command it has to be supplied at the end of log-in line

/system ssh 192.168.88.1 "/ip address print" /system ssh 192.168.88.1 command="/ip address print" /system ssh 2001:db8:add:1337::beef "/ip address print" /system ssh 2001:db8:add:1337::beef command="/ip address print"

If the server does not support pseudo-tty (ssh -T or ssh host command), like mikrotik ssh server, then it is not possible to send multiline commands via SSH

For example, sending command «/ip address \n add address=1.1.1.1/24» to MikroTik router will fail.

If you wish to execute remote commands via scripts or scheduler, use command ssh-exec.

SSH exec

Sub-menu: /system ssh-exec

Command ssh-exec is a non-interactive ssh command, thus allowing to execute commands remotely on a device via scripts and scheduler.

Retrieve information

The command will return two values:

  • exit-code: returns 0 if the command execution succeeded
  • output: returns the output of remotely executed command

Example: Code below will retrieve interface status of ether1 from device 10.10.10.1 and output the result to «Log»

:local Status ([/system ssh-exec address=10.10.10.1 user=remote command=":put ([/interface ethernet monitor [find where name=ether1] once as-value]->\"status\")" as-value]->"output") :log info $Status

For security reasons, plain text password input is not allowed. To ensure safe execution of the command remotely, use SSH PKI authentication for users on both sides.

the user group and script policy executing the command requires test permission

Источник

SSH-туннель домой без необходимости оставлять включённым домашний ПК

Disclaimer
Этот пост появился здесь по нескольким причинам:
1) Меня попросил сам Boomburum
2) Есть предположение, что на хабре всё-таки есть люди, имеющие прямое отношение к IT, но при этом имеющие весьма отдалённое представление о пользе SSH и её извлечении из обычного домашнего роутера, и которым, надеюсь, будет весьма интересно и полезно об этом узнать.

Хабралюдям, познавшим Дао IOS , tun, VPN , *wrt, WOL … etc, предлагается на выбор:
А) Закрыть топик, заняться делом и не выводить себя из нирваны чтением этой любительской фигни.
Б) Потратить время на конструктивную критику и полезные дополнения в комментариях.
Специально для GrammarNazi:
Пишите пожалуйста об ошибках в личку — обещаю исправиться.

Бла-бла-бла, а топик-то о чём?
Итак, я обещал рассказать «как поднять ssh-туннель домой без необходимости оставлять включённым домашний ПК» и, как правильно догадался peter23 речь пойдёт про ssh-сервер на роутере.

Сначала о том, кому и зачем это может понадобиться и каковы начальные условия.
Предположим Вы находитесь в сети, которая подключена к интернет с ограничениями, доставляющими вам неудобства. Или напротив — Вы подключились к публичной точке доступа и у Вас обострение паранойи есть основания для беспокойства. В общем, Вы находитесь в ситуации, когда очень хотелось бы больше свободы/контроля в сети, но увы. И, кажется, можно было бы залогиниться на домашний компьютер через какой-нибудь сервис вроде logmein или teamviewer, но этот самый домашний компьютер представляет из себя ноутбук, забытый на диване без подзарядки, а личного сервера у вас нет.
Но зато у Вас дома всегда включён маршрутизатор и, пока вас нет, он просто тратит электроэнергию.

Читайте также:  Wifi роутер российского производства

Есть несколько вариантов выхода из ситуации. Ниже описан лишь один из них.

1) Определяемся с роутером
Хорошо ли вы знаете свой маршрутизатор?
Присмотритесь, может быть в заявленных функциях уже есть поддержка SSH или даже TOR. Если нет, то проверьте, можно ли её туда добавить. Для великого множества домашних и SOHO маршрутизаторов существует масса альтернативных прошивок, таких как, например, DD-WRT. Я не отрицаю достоинств прочих альтернативных прошивок, но для примера возьму эту.
У вас «народный» D-Link DIR-xxx, ASUS WL-xxxGx/RT-Nxx, Netgear, TP-Link, TRENDnet, «гиковский» Linksys WRT-xxx, Ubiquiti или что-то вроде того? Вам повезло!
Идём в базу совместимых роутеров на официальном сайте прошивки и вводим название и модель своего маршрутизатора в строку поиска. Если всё хорошо, то на всякий случай обратимся ещё к коллективному разуму для уточнения подробностей о поддержке Вашей модели. Уразумев тонкости вопроса прошиваем роутер по инструкции на сайте. Не забудьте про 30/30/30.
Если всё прошло успешно, то настраиваем постоянное подключение к интернет и переходим к следующему пункту.

2) Путь домой
Следующим шагом необходимо понять как прийти из интернета домой.
По какому адресу обратиться к роутеру?
Необходимое условие — Ваш провайдер предоставляет Вам внешний IP адрес.
Хорошо, если этот адрес статический, тогда просто запомним его на будущее. Если же адрес динамический, то проще всего использовать сервис вроде DynDNS из числа поддерживаемых прошивкой маршрутизатора.
Это проще простого: регистрируетесь на сайте, в меню роутера Setup->DDNS выбираете в выпадающем списке этот сайт, вводите «логин-пароль-хост-остальное по вкусу», нажимаете кнопку «Apply Settings» и забываете об этом. Теперь Вам надо помнить только хост (кстати, даже если IP у вас статический, можете так сделать простой для запоминания адресок, а то вдруг провайдер поменяется или случится переезд).
В итоге мы имеем на руках «адрес своего дома» в интернет в виде IP или доменного имени. Ура!

3) Знакомимся с возможностями SSHd на роутере.
http://www.dd-wrt.com/wiki/index.php/SSH
Весьма гибкий инструмент, не правда ли?
Попробуем же с его помощью пустить весь Ваш трафик от браузера и других программ через домашний роутер. Т.е. поднять ssh-туннель от Вас до домашнего роутера, таким образом, чтобы вход в него на Вашей стороне выглядел как локальный SOCKS-прокси а на выходе роутер весь трафик разруливал в соответствии с назначением, давая нам возможность скрытно безнаказанно и безопасно выйти в свободный интернет (да-да, это очень «толстая» формулировка, несомненно) и заодно пользоваться домашними сетевыми ресурсами, если таковые имеют место быть. Короче — почувствовать себя как дома.

Далее я предполагаю, что Вы будете использовать Windows, т.к. в жизни не встречал пользователя другой ОС, который бы не знал что делать с SSH.
Ну, хорошо, надкусановоды, ещё, но им уже объясняли, и вообще.

4) Ключи от квартиры, где деньги лежат.
Для безопасного подключения к нашему роутеру пара логин-пароль не очень хороша. DD-WRT по неведомым мне причинам снаружи по SSH признаёт только пользователя root, поэтому не пользоваться аутентификацией по ключам — верх легкомыслия. Но так даже лучше: не надо будет каждый раз вводить сложный пароль суперпользователя и это лишний повод научиться использовать более безопасный способ.
Для этого нам понадобится пара ключей публичный и приватный. Публичный мы отдадим роутеру, а приватный будем хранить у себя как зеницу ока.
Чтобы их получить запускаем puttygen, давим кнопку «Generate» и шевелим мышом пока не увидим примерно такую картину:

Сохраняем приватный ключ в файл с расширением .ppk, а публичный ключ достаточно просто скопировать из окошка puttygen вот сюда в настройках DD-WRT:

Читайте также:  Настроить mtu на роутере

Хорошо бы не забыть, что удалённый SSH-доступ в DD-WRT необходимо включить в разделе Administration->Management.
Я люблю задавать для SSH порт 443, т.к. этот порт почти всегда открыт наружу в корпоративных сетях и скромный шифрованый трафик на него обычно не вызывает подозрений. Внутри сети я тоже поставил 443, чтобы не путаться, а заодно отключил вход по паролю и телнет.
Любителям прекрасного советую настроить Port-Knocking и запаролить приватный ключ, если не лень каждый раз стучать по портам и клаве.

5) Клиент всегда прав
Всё, роутер (читай «сервер с SSHd») настроили, возвращаемся к нашим баранам, т.е. виндам.
Берём программу SSH-клиент, например замечательный portable KiTYY (спасибо NZeraF за наводку). И настраиваем его на подключение к нашему роутеру примерно как на скриншотах ниже:
Будем ходить под рутом.

… поэтому осторожно.

Путь к приватному ключу можно указать относительно корня диска (удобно для portable-варианта).

Немножко магии port forwarding (порт можно задать от балды, например 5150).

Вспоминаем «путь домой», придумываем название подключения (aka сессии) и сохраняем.

Нужно, конечно, учитывать особенности доступа в интернет из сети, в которой Вы находитесь (прокси там всякие и прочее). В общем клиент настроен и туннель можно запускать и использовать.
Для удобства можно создать примерно такой батничек или ярлык для быстрого запуска:
kitty.exe -load «sessionname» -send-to-tray

6) И чё с этим делать?
Вариантов масса. Можно например использовать такой туннель как локальный прокси для браузера. Как-то так или этак:

Или для доступа по RDP или SSH на другие сервера, или просто IM клиент или Skype в интернет выпустить.
И даже если ваше приложение не понимает SOCKS-прокси, достаточно просто запустить
polipo socksParentProxy=localhost:5150
и будет Вам HTTP прокси на порту 8123. В общем, всё в Ваших руках.

UPD:
Мой ответ из личной переписки по следам топика для тех несчастных, у кого только 80 порт и никаких CONNECT.
daniel.haxx.se/docs/sshproxy.html
www.nocrew.org/software/httptunnel.html
Ну и сразу для новичков-пингвиноводов-убунтолюбов — corkscrew или proxytunnel
А для их более красноглазых друзей бонус от ValdikSS

Кстати, на хабре уже писали что, роутер Вам и торренты качать может и много чего ещё. Да и домашний комьютер можно включить удалённо так или иначе (или, пробросив порт, вот так).

Источник

Оцените статью
Adblock
detector