﻿define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', true);<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>/dev/head &#187; ssh</title>
	<atom:link href="http://devhead.ru/cat/ssh/feed" rel="self" type="application/rss+xml" />
	<link>http://devhead.ru</link>
	<description>Статьи и видео уроки</description>
	<lastBuildDate>Mon, 30 Jan 2017 11:12:34 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.37</generator>
	<item>
		<title>OpenWRT Dropbear reverse tunnel</title>
		<link>http://devhead.ru/read/openwrt-dropbear-reverse-tunnel</link>
		<comments>http://devhead.ru/read/openwrt-dropbear-reverse-tunnel#comments</comments>
		<pubDate>Tue, 10 Apr 2012 11:39:05 +0000</pubDate>
		<dc:creator><![CDATA[andreykyz]]></dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[dropbear]]></category>
		<category><![CDATA[openwrt]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tunnel]]></category>

		<guid isPermaLink="false">http://devhead.ru/?p=1559</guid>
		<description><![CDATA[У меня недавно появилась задача. Мне понадобился ssh доступ на рабочий компьютер. Чтобы можно было использовать его вычислительных мощности для сборки OpenWRT. Мой домашний ноутбук делал полную сборку за 5 часов. А рабочий за 30-40 минут. Но тут была проблема, компьютер на работе был за NAT'ом. И на прямую к нему подключиться нельзя. Спасло то [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>У меня недавно появилась задача. Мне понадобился ssh доступ на рабочий компьютер. Чтобы можно было использовать его вычислительных мощности для сборки OpenWRT. Мой домашний ноутбук делал полную сборку за 5 часов. А рабочий за 30-40 минут. Но тут была проблема, компьютер на работе был за NAT'ом. И на прямую к нему подключиться нельзя. Спасло то что дома у меня был чистый ip и технология reverse tunnel. В качестве сервера я решил использовать wi-fi точку доступа <a href="http://wiki.openwrt.org/ru/toh/tp-link/tl-wr1043nd">TP-Link TL-WR1043ND</a> с OpenWRT и Dropbear.</p>
<p><span id="more-1559"></span></p>
<h3>Что у нас дано?</h3>
<p>Упрощённая сетевая схема:</p>
<p><a href="http://devhead.ru/wp-content/uploads/2012/04/openwrt_reverse_tunnel1.png"><img class="aligncenter size-full wp-image-1563" title="Openwrt reverse tunnel scheme." src="http://devhead.ru/wp-content/uploads/2012/04/openwrt_reverse_tunnel1.png" alt="OpenWRT Dropbear ssh reverse tunnel scheme" width="587" height="309" /></a><a href="http://devhead.ru/wp-content/uploads/2012/04/openwrt_reverse_tunnel.png"><br />
</a></p>
<h3>Настройка рабочего компьютера(Work)</h3>
<p>Рабочий компьютер должен всегда держать соединение с сервером. Даже после перезагрузки сервера соединение должно переустанавливаться.</p>
<p>Первое что нужно сделать, это ключи авторизации. т.к. когда я буду дома вводить на работе пароль буден некому.</p>
<p>И так создаем пару ключей:</p>
<blockquote><p>ssh-keygen -b 1024 -t dsa</p></blockquote>
<p>Затем копируем его на сервер</p>
<blockquote><p>scp .ssh/id_dsa.pub root@openwrt.router:/etc/dropbear/authorized_key -p 1022</p></blockquote>
<p>у меня Dropbear висит на 1022 порту, поэтому я его указываю. Если у вас 22, то можно не указывать</p>
<p>Теперь нужно добавить установку тунеля по Cron. Я взял скрипт <a href="http://www.brandonhutchinson.com/ssh_tunnelling.html">отсюда</a> немного его переделав. Скрипт я положил сюда: <strong>/etc/cron.d/ssh_reverse_tunnel.sh</strong>, вот его содержимое:</p>
<pre class="brush: bash">#!/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" &gt; /dev/null 2&gt;&amp;1 || $COMMAND

# 2. Test tunnel by looking at "netstat" output on $REMOTE_HOST
ssh $SSHD_USER@$SSHD_HOST -p $SSHD_PORT netstat -an 2&gt;/dev/null | egrep "tcp.*:$LISTENING_PORT.*LISTEN" \
   &gt; /dev/null 2&gt;&amp;1
if [ $? -ne 0 ] ; then
   pkill -f -x "$COMMAND"
   $COMMAND
fi</pre>
<p>Сам тунель устанавливается этой коммандой:</p>
<p>ssh -f -N -R $LISTENING_HOST:$LISTENING_PORT:localhost:22 $SSHD_USER@$SSHD_HOST -p $SSHD_PORT</p>
<p>где:</p>
<p>$LISTENING_HOSH - ip адрес на котором будут слушаться подключения, которые будут пробразываться на рабочий компьютер</p>
<p>$LISTENING_PORT - соответственно порт</p>
<p>localhost:22 - это куда пообрасывается соединение</p>
<p>$SSHD_USER@$SSHD_HOST -p $SSHD_PORT - login, внешний ip адрес и порт роутера</p>
<p>Задание для Cron я сделал выполняющиеся каждые 5 минут. Сначала вводим в консоли:</p>
<blockquote><p>crontab -e</p></blockquote>
<p>и вставляем:</p>
<blockquote><p>*/5 * * * * /etc/cron.d/ssh_reverse_tunnel.sh 2&gt;&amp;1 1&gt;/dev/null &amp;</p></blockquote>
<h3>Настройка сервера(OpenWRT router)</h3>
<p>В качестве сервера у меня, как сказано выше, будет точка доступа TL-WR1043ND. В качестве ssh сервера я решил использовать Dropbear т.к. он занимает меньше места чем OpenSSH server и имеет весь нужный мне функционал.</p>
<p>Вся настройка заключается в добавлении строчки:</p>
<blockquote><p>option 'GatewayPorts' 'on'</p></blockquote>
<p>в файл <strong>/etc/config/dropbear</strong></p>
<p>и смене прав на файл с ключом:</p>
<blockquote><p>chmod 0600 /etc/dropbear/authorized_key</p></blockquote>
<h3>Ноутбук(Home)</h3>
<p>Ну вот и все почти все готово. Подключаемся к работе так:</p>
<blockquote><p>ssh user@openwrt.local -p 12345</p></blockquote>
<p>где:</p>
<p>user - пользователь на работе</p>
<p>openwrt.local - локальный адрес роутера</p>
<p>12345 - порт для которого открыт туннель</p>
<h3>Ссылки</h3>
<ol>
<li><a class="external free" title="ssh tunnelling" href="https://forum.openwrt.org/viewtopic.php?id=11721" rel="nofollow">ssh tunnelling</a></li>
<li><a class="external free" title="[Howto] Dropbear with public key authentication" href="http://www.brandonhutchinson.com/ssh_tunnelling.html" rel="nofollow">[Howto] Dropbear with public key authentication</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://devhead.ru/read/openwrt-dropbear-reverse-tunnel/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->