Как я могу использовать SSH с прокси SOCKS 5?

У меня есть прокси SOCKS5, настроенный через PuTTY с портом 7777, настроенным как динамический порт. Я могу использовать firefox/filezilla/etc, настроив их на использование прокси-сервера SOCKS с localhost и порт 7777, Но я не могу понять, как подключиться через ssh (через Cygwin) к удаленному серверу, используя динамический порт. Это возможно?

Я пытался использовать ProxyCommand с помощью следующего метода.

  1. Создайте ~/.ssh/config со следующей строкой:

    ProxyCommand /usr/bin/nc -X connect -x 127.0.0.1:7777 %h %p
    
  2. Запустите ssh -p22 user@remotehost

Я получаю сообщение ssh_exchange_identification: Connection closed by remote host

6 ответов

Решение

Вы используете "connect" для HTTPS в качестве прокси-версии, это от man nc:

-X proxy_version Запрашивает, чтобы nc использовал указанный протокол при обращении к прокси-серверу. Поддерживаются следующие протоколы: "4" (SOCKS v.4), "5" (SOCKS v.5) и "connect" (HTTPS-прокси). Если протокол не указан, используется SOCKS версии 5.

Таким образом, вы должны использовать следующее, чтобы использовать SOCKS 5:

ProxyCommand /usr/bin/nc -X 5 -x 127.0.0.1:7777 %h %p

Или просто:

ProxyCommand /usr/bin/nc -x 127.0.0.1:7777 %h %p

Я надеюсь, что это помогает.

ssh -o ProxyCommand='nc --proxy-type socks4 --proxy 127.0.0.1:9050 %h %p' user@host

fc19 x86_64, Ncat: версия 6.25

tsocks ( http://tsocks.sourceforge.net/) - это хорошая оболочка, которая использует LD_PRELOAD, чтобы любая программа прозрачно использовала прокси SOCKS:

tsocks ssh example.com

Просто работает, не забудьте настроить IP прокси SOCKS в /etc/tsocks.conf

Следующая команда сделает просто использовать nc:

ssh examplehost.com -o "ProxyCommand=nc --proxy localhost:7000 %h %p"

По умолчанию используется HTTP-прокси, HTTP-прокси работает на порту 7000.

ssh способен понятьALL_PROXYпеременная среды, так что, видимо, что-то вроде этого

      ALL_PROXY=socks5://127.0.0.1:9150 ssh example.com

помогает, по крайней мере, для меня.

Чтобы было проще, вы можете вставить их~/.ssh/config

      host = example.com
ProxyCommand nc -X 5 -x 127.0.0.1:9150 %h %p

Любая команда ssh в терминале теперь будет проходить через этот прокси.

Другие вопросы по тегам