Современная реализация оболочки OpenSSH позволяет использовать её как SOCKS прокси. Этот факт позволяет использовать ssh-тоннель для передачи трафика через внешний сервер без использования на нём специфического ПО, такого как Dante и прочего. Видимо, так же, это одна из причин, по которой проект Dante заброшен уже более двух лет.
И так, попробуем слегка автоматизировать соединение со внешним сервером, чтоб это выглядело почти так же, как при использовании "стандартного" для таких случаев ПО, так как соединение с использованием SSH подразумевает использование терминала. А открытый терминал на протяжении всей сессии на домашнем компьютере не всегда удобен.
В примере у меня сервер на Debian Jessie и домашний ПК с рабочим столом KDE. Это не особо важно, так как всё достаточно просто и будет работать в любом другом окружении. Имеется ввиду, что на сервере уже установлен пакет OpenSSH.
Если доступ к SSH на сервере у нас по паролю, то на домашнем ПК устанавливаем пакет sshpass:
Этот шаг можно пропустить, если доступ осуществляется по ключам.
В директории /home/user/.config/autostart-scripts/ создаём скрипт с любым именем (например socksconnect.sh). Возможно для других рабочих столов путь немного отличается. В Ubuntu он ~/.config/autostart, если я не ошибаюсь.
Содержание скрипта (если авторизация с использованием ключей):
Если авторизация по паролю:
Где sleep 30s - задержка в 30 секунд. Команда будет выполнена через 30 секунд после загрузки рабочего стола, что даст время на поднятие сетевых интерфейсов. Значение опционально и всё зависит от персональных настроек и скорости загрузки. Если команда будет выполняться до поднятия сети, то естественно соединение установлено не будет.
password - пароль пользователя на удалённом сервере.
1080 - порт, с которым мы будем устанавливать соединение. Может быть любой свободный, не спрятанный за фаерволом порт.
~/.ssh/ssh_keys - путь к папке с ключами.
user@ip_address - имя пользователя на сервере и внешний IP или доменное имя сервера.
Делаем скрипт исполняемым
Таким образом соединение будет устанавливаться при каждом запуске ПК. Если в этом нет необходимости, то можно поместить данный скрипт в любое другое удобное место. Можно прикрутить к нему симпатичный ярлычок и поместить его на рабочий стол, чтоб поднимать соединение тогда, когда оно нужно.
В настройках программы, которую нужно завернуть через прокси (например в Firefox) указываем, что соединяемся с SOCKS5 сервером, где адрес сервера 127.0.0.1 (или localhost) и порт 1080, или любой другой, прописанный в скрипте.
И так, попробуем слегка автоматизировать соединение со внешним сервером, чтоб это выглядело почти так же, как при использовании "стандартного" для таких случаев ПО, так как соединение с использованием 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
Таким образом соединение будет устанавливаться при каждом запуске ПК. Если в этом нет необходимости, то можно поместить данный скрипт в любое другое удобное место. Можно прикрутить к нему симпатичный ярлычок и поместить его на рабочий стол, чтоб поднимать соединение тогда, когда оно нужно.
В настройках программы, которую нужно завернуть через прокси (например в Firefox) указываем, что соединяемся с SOCKS5 сервером, где адрес сервера 127.0.0.1 (или localhost) и порт 1080, или любой другой, прописанный в скрипте.
___
Tatyana K.
Tatyana K.