1

Как я могу использовать SCP для копирования файла с локального компьютера на удаленный сервер, минуя прокси?

Когда я использую scp -r <my_folder> <remote_user>@<remote_machine>:/home/test следующее сообщение об ошибке:

ssh: connect to host <host_ip> port 22: Connection timed out
lost connection

Я совершенно новичок в этом вопросе - любая помощь приветствуется.

1 ответ1

6

Если вас блокирует брандмауэр, вам нужно пройти через прокси, а не пытаться его обойти. Вы не указали, какой тип прокси есть (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)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .