http proxy sobre ssh, não socks

27

A questão é simples, mas a resposta não é:

ssh -D 8080 user@host

ou

ssh -gCNf -D 8080 user@host

ou

wathever with -D #

Eu preciso de um tipo de proxy que eu possa usar com a variável http_proxy, em um dispositivo incorporado que não suporte o SOCKS.

O que devo fazer?

    
por behrooz 06.05.2011 / 16:32

6 respostas

31

Método 1: Use um proxy HTTP que suporte o uso de um SOCKS upstream, por exemplo. Polipo ou Privoxy.

Primeiro, estabeleça um túnel -D sobre SSH, como sempre, e configure o proxy HTTP para usar o túnel SSH - exemplo de configuração Polipo:

proxyAddress = "::1"
proxyPort = 8118
socksParentProxy = "localhost:8080"
socksProxyType = socks5

Por fim, aponte o aplicativo para Polipo usando http_proxy=localhost:8118 .

Método 2: Execute seu programa dentro do torsocks wrapper (ou o antigo tsocks ), que faz o proxy de todas as conexões de forma transparente. Ele foi criado para uso com o Tor, mas funciona com qualquer servidor SOCKS, incluindo ssh -D .

Método 3: Configure um proxy HTTP no seu servidor e use ssh -L para acessá-lo.

    
por 06.05.2011 / 17:02
17

Todos os -D resultam em um servidor SOCKS. Se seu cliente não puder lidar com SOCKS, esqueça -D .

Você deve executar um proxy HTTP no host remoto e encaminhar com -L :

ssh -f -N -n -L8080:127.0.0.1:8080 host
    
por 06.05.2011 / 17:02
6

Eu tenho o mesmo problema que deseja usar o proxy HTTP por meio do SSH. Como muitos aplicativos suportam apenas o proxy HTTP, e o proxy HTTP é fácil de ser usado no ambiente de linha de comando.

Embora tenha pesquisado várias páginas, mas não consigo encontrar uma maneira direta (pode ser encadeada com Polipo, Privoxy ou tsocks) para fazer isso ...

Após um dia de trabalho, terminei uma versão simples de Golang do proxy HTTP sobre SSH. Sinta-se à vontade para brincar com ele: mallory .

Atualmente, apenas suporta a chave RSA (localizada em $ HOME / .ssh / id_rsa) e a autorização de senha.

host é o endereço do servidor SSH, port is 22 se não for alterado pelo seu administrador. O lado do servidor é apenas nosso antigo amigo sshd com configuração zero.

mallory -engine=ssh -remote=ssh://host:port

ou com nome de usuário user

mallory -engine=ssh -remote=ssh://user@host:port

ou com nome de usuário user e senha 1234

mallory -engine=ssh -remote=ssh://user:1234@host:port

Depois de conectado, um proxy HTTP será exibido no host local: 1315.

    
por 19.06.2014 / 14:54
4
ssh -L 8080:localhost:12345 user@host

Isso abrirá a porta 8080 na máquina local e encaminhará todos os dados para a porta 12345 no host local, conforme visto da máquina remota.

    
por 06.05.2011 / 17:01
2

Execute o Privoxy no host remoto e, em seguida, conecte-se via SSH ao Privoxy usando a opção -L :

-L [bind_address:]port:host:hostport
         Specifies that the given port on the local (client) host is to be
         forwarded to the given host and port on the remote side.  This
         works by allocating a socket to listen to port on the local side,
         optionally bound to the specified bind_address.  Whenever a con-
         nection is made to this port, the connection is forwarded over
         the secure channel, and a connection is made to host port
         hostport from the remote machine.

( fonte de manpage )

    
por 01.09.2013 / 10:37
1

Você também pode usar saca-rolhas (GPL)

Adicione o seguinte ao seu .ssh/config

Host=RemoteServerIP or Name
User=UserLoginName
Port=PortNumber
ProxCommand=/usr/bin/corkscrew Proxy.Adress PortNumber %h %p
    
por 15.11.2016 / 16:02