Como posso usar o SSH para fazer o tunelamento para uma porta que está aberta na máquina a que tenho acesso, mas não aberta ao mundo externo?

3

Eu atualmente uso o SSH para tunelar minha conexão com a Internet, usando ssh -p <port> -ND <local port> <user>@<ip address> , e isso funciona muito bem. No entanto, eu gostaria de vincular uma porta local a uma porta que está aberta no computador que eu estou usando o SSHing, mas não abrir para o mundo exterior, para que eu possa se conectar ao serviço na máquina que eu estou usando o SSHing em minha máquina local por referências a uma porta (digamos, 1234) como localhost: 1234, em vez de, digamos, remotehost: 5678 (que não funcionará na minha situação por causa de problemas de firewall).

    
por Eva 06.12.2012 / 18:17

4 respostas

2

Você precisa usar a opção Endereço de vinculação de ssh:

 -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 lis‐
         ten to port on the local side, optionally bound to the
         specified bind_address.  Whenever a connection 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.  Port forwardings can
         also be specified in the configuration file.  IPv6
         addresses can be specified by enclosing the address in
         square brackets.  Only the superuser can forward privi‐
         leged ports.  By default, the local port is bound in
         accordance with the GatewayPorts setting.  However, an
         explicit bind_address may be used to bind the connection
         to a specific address.  The bind_address of “localhost”
         indicates that the listening port be bound for local use
         only, while an empty address or ‘*’ indicates that the
         port should be available from all interfaces.

Portanto, por exemplo, para vincular a porta local 1234 à porta 6667 do servidor remoto server.example.com, você faria algo assim:

ssh -f -L 1234:localhost:6667 server.example.com 
    
por 06.12.2012 / 18:28
2

assumindo que o host ssh esteja publicamente acessível, você provavelmente desejará procurar em Batendo no Porto Aqui está uma maneira de aplicá-lo ao SSH: link

    
por 06.12.2012 / 18:26
0

dê uma olhada aqui: link Ele realmente cria um proxy local socks onde todos os dados são passados são enviados para a máquina sshed, em qualquer porta.

    
por 07.12.2012 / 13:54
0

A sua pergunta é um pouco estranha, porque você está perguntando Como você configura o computador remoto para ter acesso somente a partir do seu computador de origem, com ssh?

Ou você está perguntando como você o configura para restringir o acesso para permitir apenas o seu computador, com qualquer coisa, e então se conectar a ele com o ssh.

Ou você está dizendo que já está configurado assim, como você se conecta agora com o SSH?

De qualquer forma,

Veja este tópico aqui menciona algumas formas de restringir o acesso, menciona fazê-lo com o SSH ou com iptables (um firewall), e se você quiser então se conectar com o SSH, isso é normal.

Why not add in your /etc/host.allow: sshd: IPADDRESS, IPADRRESS

ou

Something like this in /etc/ssh/sshd_config perhaps? AllowUsers [email protected].*,1.2.3.4,5.6.7.8

[email protected].* [email protected].*

isto

The AllowUsers option for sshd_config is the easiest

route if you know who the users are. Alternatively,

there is the equally easy tcp_wrappers way

(/etc/hosts.allow and /etc/hosts.deny).

ou

Probably easier to setup a firewall rule something like iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 --source [accepted ip address here] -j ACCEPT

    
por 07.12.2012 / 14:28