Бывают случаи когда нужно использовать ssh через proxy HTTP. Например ssh через proxy HTTP будет кстати когда Интернет провайдер запретил доступ по ИП или же ssh через proxy HTTP нужно использовать для обхода ограничений корпоративного брандмауэра.
Программа corkscrew может быть скомпилирована в таких операционных системах как:
- HPUX
- Solaris
- FreeBSD
- OpenBSD
- Linux
- Win32 (with Cygwin)
Установка программы corkscrew:
cd /usr/local/src wget http://www.agroman.net/corkscrew/corkscrew-2.0.tar.gz tar -zxf corkscrew-2.0.tar.gz rm -f corkscrew-2.0.tar.gz cd corkscrew-2.0 less INSTALL ./configure creating cache ./config.cache checking for a BSD compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking whether make sets ${MAKE}... yes checking for working aclocal... found checking for working autoconf... found checking for working automake... found checking for working autoheader... found checking for working makeinfo... missing checking for gcc... gcc checking whether the C compiler (gcc ) works... yes checking whether the C compiler (gcc ) is a cross-compiler... no checking whether we are using GNU C... yes checking whether gcc accepts -g... yes checking for gcc option to accept ANSI C... none needed checking how to run the C preprocessor... gcc -E checking for function prototypes... yes checking for gcc... (cached) gcc checking whether the C compiler (gcc -g -O2 ) works... yes checking whether the C compiler (gcc -g -O2 ) is a cross-compiler... no checking whether we are using GNU C... (cached) yes checking whether gcc accepts -g... (cached) yes checking for mawk... no checking for gawk... gawk checking for a BSD compatible install... /usr/bin/install -c checking whether ln -s works... yes checking host system type... i686-pc-linux-gnu checking for ANSI C header files... yes checking whether time.h and sys/time.h may both be included... yes checking for select... yes checking for socket... yes checking for strerror... yes checking for working const... yes updating cache ./config.cache creating ./config.status creating Makefile creating config.h make install clean
Программа corkscrew будет расположена в директории /usr/local/bin/: /usr/local/bin/corkscrew. Теперь для использования ssh через Proxy HTTP в Linux, переходим в домашний каталог и создаём файл конфигурации config для ssh:
cd ~/.ssh vi config Host * ProxyCommand corkscrew example-proxy.com 8080 %h %p
Host * - определяет хост при подключении к которому нужно будет использовать прокси сервер, в данном случае * при подключении через ssh к любым хостам будет использоваться указанный прокси сервер example-proxy.com 8080.
Вместо example-proxy.com 8080 указываем адрес реально рабочего прокси сервера и его порт. В переменные %h %p автоматически будут попадать значения из вашего ssh клиента, соответствуют хосту и порту.
Проверить результат подключения через ssh к любым хостам можно использовав привычную команду ssh:
ssh target-ssh-host.com
Если подключение выполнено без ошибок, то значит теперь вы используете ssh соединение через proxy HTTP. Для использования ssh через proxy HTTP которые требуют авторизации, нужно в тот же файле конфигурации config указать место расположение файла с логиами и паролями, которые записываются в формате login:password:
Host * ProxyCommand corkscrew example-proxy.com 8080 %h %p ~/.ssh/proxyauth
По официального описания Corkscrew тестировался на таких HTTP proxies как:
- Gauntlet
- CacheFlow
- JunkBuster
- Apache mod_proxy
Относительно успешного использования Corkscrew для подключения к ssh через proxy HTTP других версий/производителей ничего не ясно и автор Corkscrew просит репортировать ему на электронную почту.
Corkscrew используется для тунелирования ssh через proxy по протоколу HTTP но, как отмечает автор, вы возможно сможете найти для Corkscrew иное применение.
В windows для тунелирования ssh через proxy можно использовать программу Putty, его же можно установить и в Linux командой yum install putty, только putty утилита для работы в графической среде (интерфейсе/режиме) и для консольного режима неканает!