Некоторое время назад на моей работе резко ужесточили политику безопасности, перекрыв доступ ко множеству интернет-ресурсов, в том числе ко всем известным почтовым системам.

Т.к. моя почта находится на GMail, я, также, однажды утром не смог отрыть свой почтовый ящик.

Но, как водится, на каждый лом найдется другой лом покрепче. Так исторически сложилось, что у меня дома установлен сервер, работающий круглосуточно, который выполняет разные полезные функции, как то:

  • Веб-сервер;
  • Скачивание и раздача torrent-ов;
  • Сетевое файловое хранилище;
  • SVN-сервер для моих проектов;
  • Backup для остальных компьютеров и много других мелких задач.

Сам сервер не представляет особого интереса - это старенький компьютер, который работает под управлением openSUSE без поддержки графического режима. Мой домашний интернет-провайдер предоставляет каждому клиенту статический "белый" IP-адрес, благодаря чему я могу получить доступ к серверу из любого уголка земного шара.

А теперь по делу. На сервере в числе прочих сервисов настроен SSH-сервер, который до этого я использовал для доступа к командной строке из внешнего мира. Причем, он настроен таким образом, что слушает не стандартный порт, а порт 443, который является единственным портом, который обычно открыт для пользователей.

Протокол SSH, помимо доступа к командной строке удаленного компьютера, позволяет создать TCP -туннель для передачи любой информации (будь то файлы или HTTP траффик).

Для открытия туннеля не нужно никакого дополнительного программного обеспечения, только sshd на серверной стороне и ssh-клиент на клиентском компьютере.

Для соединения с сервером, выполните команду:

[shell]ssh -ND localhost:1818 login@remoteserver.ru -p 443[/shell]

Параметр "-D  localhost:1818" указывает локальный порт, который будет прослушивать ssh-клиент.

"login@remoteserver.com" указывает имя пользователя на удаленной системе и непосредственно адрес этой системы.

"-p 443" указывает порт ssh-сервера на удаленной системе.

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

Для запуска ssh в background режиме, можно добавить параметр "-f".

Итак, соединение установлено. Теперь, для того, чтобы воспользоваться созданным туннелем, необходимо в настройках Вашего браузера указать SOCKS прокси-сервер с адресом "localhost" и портом "1818", который был указан выше.

Вот и все. Теперь весь траффик идет по шифрованному ssh-туннелю через удаленную машину.