» » » OpenSSH тоннель в роли SOCKS сервера

OpenSSH тоннель в роли SOCKS сервера

Author: Blacksmith dated 22-11-2016, 07:02
OpenSSH тоннель в роли SOCKS сервераСовременная реализация оболочки OpenSSH позволяет использовать её как SOCKS прокси. Этот факт позволяет использовать ssh-тоннель для передачи трафика через внешний сервер без использования на нём специфического ПО, такого как Dante и прочего. Видимо, так же, это одна из причин, по которой проект Dante заброшен уже более двух лет.

И так, попробуем слегка автоматизировать соединение со внешним сервером, чтоб это выглядело почти так же, как при использовании "стандартного" для таких случаев ПО, так как соединение с использованием SSH подразумевает использование терминала. А открытый терминал на протяжении всей сессии на домашнем компьютере не всегда удобен.

В примере у меня сервер на Debian Jessie и домашний ПК с рабочим столом KDE. Это не особо важно, так как всё достаточно просто и будет работать в любом другом окружении. Имеется ввиду, что на сервере уже установлен пакет OpenSSH.

Если доступ к SSH на сервере у нас по паролю, то на домашнем ПК устанавливаем пакет sshpass:

sudo apt install sshpass


Этот шаг можно пропустить, если доступ осуществляется по ключам.

В директории /home/user/.config/autostart-scripts/ создаём скрипт с любым именем (например socksconnect.sh). Возможно для других рабочих столов путь немного отличается. В Ubuntu он ~/.config/autostart, если я не ошибаюсь.

nano ~/.config/autostart-scripts/socksconnect.sh 


Содержание скрипта (если авторизация с использованием ключей):

#! /bin/bash 
sleep 30s && ssh -fN -D 1080 user@ip_address -i ~/.ssh/ssh_keys 


Если авторизация по паролю:

#! /bin/bash 
sleep 30s && sshpass -p 'password' ssh -fN -o StrictHostKeyChecking=no -D 1080 user@ip_address 


Где sleep 30s - задержка в 30 секунд. Команда будет выполнена через 30 секунд после загрузки рабочего стола, что даст время на поднятие сетевых интерфейсов. Значение опционально и всё зависит от персональных настроек и скорости загрузки. Если команда будет выполняться до поднятия сети, то естественно соединение установлено не будет.

password - пароль пользователя на удалённом сервере.

1080 - порт, с которым мы будем устанавливать соединение. Может быть любой свободный, не спрятанный за фаерволом порт.

~/.ssh/ssh_keys - путь к папке с ключами.

user@ip_address - имя пользователя на сервере и внешний IP или доменное имя сервера.

Делаем скрипт исполняемым

cd ~/.config/autostart-scripts 
chmod +x socksconnect.sh 


OpenSSH тоннель в роли SOCKS сервераТаким образом соединение будет устанавливаться при каждом запуске ПК. Если в этом нет необходимости, то можно поместить данный скрипт в любое другое удобное место. Можно прикрутить к нему симпатичный ярлычок и поместить его на рабочий стол, чтоб поднимать соединение тогда, когда оно нужно.

OpenSSH тоннель в роли SOCKS сервераВ настройках программы, которую нужно завернуть через прокси (например в Firefox) указываем, что соединяемся с SOCKS5 сервером, где адрес сервера 127.0.0.1 (или localhost) и порт 1080, или любой другой, прописанный в скрипте.
___
Tatyana K.


Tags: Linux, Proxy, SOCKS


 
  • Creative Commons Licence
  • Norton Safeweb
  • Powered by MariaDB
  • Powered by MariaDB
  • Website Uptime Monitoring By ServiceUptime.com
  • Yandex.Metrica