OpenWRT Dropbear reverse tunnel

У меня недавно появилась задача. Мне понадобился ssh доступ на рабочий компьютер. Чтобы можно было использовать его вычислительных мощности для сборки OpenWRT. Мой домашний ноутбук делал полную сборку за 5 часов. А рабочий за 30-40 минут. Но тут была проблема, компьютер на работе был за NAT'ом. И на прямую к нему подключиться нельзя. Спасло то что дома у меня был чистый ip и технология reverse tunnel. В качестве сервера я решил использовать wi-fi точку доступа TP-Link TL-WR1043ND с OpenWRT и Dropbear.

Что у нас дано?

Упрощённая сетевая схема:

OpenWRT Dropbear ssh reverse tunnel scheme

Настройка рабочего компьютера(Work)

Рабочий компьютер должен всегда держать соединение с сервером. Даже после перезагрузки сервера соединение должно переустанавливаться.

Первое что нужно сделать, это ключи авторизации. т.к. когда я буду дома вводить на работе пароль буден некому.

И так создаем пару ключей:

ssh-keygen -b 1024 -t dsa

Затем копируем его на сервер

scp .ssh/id_dsa.pub root@openwrt.router:/etc/dropbear/authorized_key -p 1022

у меня Dropbear висит на 1022 порту, поэтому я его указываю. Если у вас 22, то можно не указывать

Теперь нужно добавить установку тунеля по Cron. Я взял скрипт отсюда немного его переделав. Скрипт я положил сюда: /etc/cron.d/ssh_reverse_tunnel.sh, вот его содержимое:

#!/bin/bash

LISTENING_HOST=0.0.0.0
LISTENING_PORT=12345

SSHD_HOST=openwrt.router
SSHD_USER=root
SSHD_PORT=1022

# $COMMAND is the command used to create the reverse ssh tunnel
COMMAND="ssh -f -N -R $LISTENING_HOST:$LISTENING_PORT:localhost:22 $SSHD_USER@$SSHD_HOST -p $SSHD_PORT"

# Is the tunnel up? Perform two tests:

# 1. Check for relevant process ($COMMAND)
pgrep -f -x "$COMMAND" > /dev/null 2>&1 || $COMMAND

# 2. Test tunnel by looking at "netstat" output on $REMOTE_HOST
ssh $SSHD_USER@$SSHD_HOST -p $SSHD_PORT netstat -an 2>/dev/null | egrep "tcp.*:$LISTENING_PORT.*LISTEN" \
   > /dev/null 2>&1
if [ $? -ne 0 ] ; then
   pkill -f -x "$COMMAND"
   $COMMAND
fi

Сам тунель устанавливается этой коммандой:

ssh -f -N -R $LISTENING_HOST:$LISTENING_PORT:localhost:22 $SSHD_USER@$SSHD_HOST -p $SSHD_PORT

где:

$LISTENING_HOSH - ip адрес на котором будут слушаться подключения, которые будут пробразываться на рабочий компьютер

$LISTENING_PORT - соответственно порт

localhost:22 - это куда пообрасывается соединение

$SSHD_USER@$SSHD_HOST -p $SSHD_PORT - login, внешний ip адрес и порт роутера

Задание для Cron я сделал выполняющиеся каждые 5 минут. Сначала вводим в консоли:

crontab -e

и вставляем:

*/5 * * * * /etc/cron.d/ssh_reverse_tunnel.sh 2>&1 1>/dev/null &

Настройка сервера(OpenWRT router)

В качестве сервера у меня, как сказано выше, будет точка доступа TL-WR1043ND. В качестве ssh сервера я решил использовать Dropbear т.к. он занимает меньше места чем OpenSSH server и имеет весь нужный мне функционал.

Вся настройка заключается в добавлении строчки:

option 'GatewayPorts' 'on'

в файл /etc/config/dropbear

и смене прав на файл с ключом:

chmod 0600 /etc/dropbear/authorized_key

Ноутбук(Home)

Ну вот и все почти все готово. Подключаемся к работе так:

ssh user@openwrt.local -p 12345

где:

user - пользователь на работе

openwrt.local - локальный адрес роутера

12345 - порт для которого открыт туннель

Ссылки

  1. ssh tunnelling
  2. [Howto] Dropbear with public key authentication

Теги: , , ,

Дата: 10 апреля 2012

Автор: andreykyz

Комментарии: 386

Комментарии: 386

  1. can i buy amoxicillin over the counter in canada
    generic augmentin coupon
    amoxicillin pharmacy DIT pruMn

  2. amoxicillin 500mg capsule generic
    augmentin 500mg tablet
    amoxicillin best price DIT pruMn

  3. cheap amoxil online
    augmentin medication
    augmentin capsules 875 mg DIT pruMn

  4. amoxil 250 mg capsule
    amoxicillin 500 mg purchase without prescription
    buy cheap augmentin DIT pruMn

  5. augmentin 625mg price
    buy generic augmentin online uk
    augmentin 375mg tablets DIT pruMn

Оставить комментарий

*

Комментарий:

Ваш e-mail не будет опубликован.
Обязательные поля помечены *

Разрешенные HTML теги:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>