Если вас блокирует брандмауэр, вам нужно пройти через прокси, а не пытаться его обойти. Вы не указали, какой тип прокси есть (SOCKS/HTTP?).
Если прокси-сервер SOCKS, вам просто нужна программа, которая будет "socksify" вашей команды scp, например:
- tsocks, позволяет socksify конкретной программы, перехватывая системные вызовы; http://tsocks.sourceforge.net/
- Tun2socks, который я разработал, имитирует виртуальный маршрутизатор за сетевым интерфейсом tun. Его немного сложнее настроить, но он заставляет все проходить через прокси SOCKS. В следующем руководстве объясняется, как использовать tun2socks с прокси-сервером SOCKS, предоставляемым опцией SSH -D, но вы должны просто игнорировать все, что говорится о SSH, и просто указать свой прокси-сервер SOCKS. http://code.google.com/p/badvpn/wiki/tun2socks
Если, с другой стороны, прокси-сервер использует только HTTP, ситуация намного сложнее. Если вам повезет, ваш HTTP-прокси поддерживает команду CONNECT, и вы можете использовать ее для подключения к SSH-серверу. Если прокси-сервер ограничивает команду CONNECT определенными номерами портов, вам придется изменить номер порта, который ваш SSH-сервер прослушивает, на тот, который разрешен HTTP-прокси.
Одна из программ, которую вы можете использовать для этого, - ProxyTunnel: http://proxytunnel.sourceforge.net/intro.php
Но что, если вы должны, но не можете изменить порт прослушивания сервера SSH (или хотите подключиться к чему-либо, а не только к вашему серверу SSH)? В этом случае единственное решение - пройти через промежуточный сервер, который вы имеете полный контроль. Итак, затем подключитесь к этому промежуточному серверу с помощью SSH (через ProxyTunnel). Тогда ты можешь:
- либо используйте опцию динамической пересылки (-D) SSH (которая открывает локальный сервер SOCKS на клиенте), и получите свой scp через этот интерфейс SOCKS, используя tsocks или tun2socks, как описано выше, или,
- установить настоящую IP VPN между вашим компьютером и промежуточным сервером, к которому вам удалось подключиться (см. опцию ssh -w)