Linux - redireciona o SSH em uma porta para outra máquina na rede local

1

Eu tenho uma máquina guest KVM em uma rede virtual. Tem um endereço IP como 192.168.122.65 . A máquina host está conectada à internet pública. Se eu abrir um terminal na máquina host, posso conectar o SSH ao convidado digitando ssh [email protected] , então sei que funciona bem.

Agora eu gostaria de receber o convidado de qualquer computador pela Internet. Como posso configurar a máquina host para tornar isso possível? Eu tentei muitas regras com iptables , mas nenhuma ajudou até agora.

Atualização: até agora, esta solução parece funcionar, mas ainda não tentei reiniciar o servidor: link

    
por Áron Lőrincz 17.08.2015 / 20:41

2 respostas

1

Se a máquina host também estiver executando o software do servidor SSH e puder ser acessada pela Internet, você poderá usar o comando ssh -L 22065:127.0.0.1:22 [email protected] . A opção -L é usada da seguinte maneira:

 -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.  Port forwardings can also be
             specified in the configuration file.  IPv6 addresses can be spec‐
             ified by enclosing the address in square brackets.  Only the
             superuser can forward privileged ports.  By default, the local
             port is bound in accordance with the GatewayPorts setting.  How‐
             ever, 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.

Digamos que o endereço IP do host seja 10.0.0.5. De um sistema na Internet, você poderia estabelecer uma conexão com a porta 22065 no host com o comando ssh -p 22065 [email protected] . Nota: você precisa fornecer um ID de usuário e uma senha válidos para o sistema convidado, mesmo que esteja usando o endereço IP público do host (estou usando um endereço do intervalo de endereços IP privados 10.xxx apenas para fins de exemplo), já que o connectivty será realmente tunelado para o convidado.

Quando a conexão à porta 22065 no host é feita, ela é encaminhada pelo túnel SSH estabelecido pelo sua primeira conexão SSH do host para o sistema convidado em 192.168.122.65. No que diz respeito a um cliente SSH na Internet, ele está indo diretamente para o sistema guest na porta 22065, embora esteja realmente se conectando à porta 22 desse sistema através do túnel SSH do host 10.0.0.5. Nota: para que isso funcione, a conexão SSH do host para o sistema convidado deve estar ativa no momento.

Onde coloquei 127.0.0.1 , você também poderia colocar 192.168.122.65 , mas como a conexão é com o localhost endereço, ou seja, o convidado em si, em vez de algum sistema externo a ele, eu usaria 127.0.0.1

Para as regras de firewall necessárias, você precisa ter uma regra no host e em quaisquer firewalls entre ela e a Internet que permitam conexões TCP de entrada à porta 22065 ou à porta que você selecionar. Você não precisará de nenhuma regra de firewall adicional no sistema convidado.

    
por 18.08.2015 / 02:38
0

Primeiro, talvez não faça ssh na VM?
Em vez disso, obtenha tmux em seu host KVM e conecte-se a ele, onde você pode ter tantas sessões ssh abertas quanto desejar.

Diga-me se algo disso parece mais próximo do que você quer, e eu vou elaborar.

Rápido e sujo:

  • Configure um túnel reverso com ssh -R , execute-o no host KVM, configure seu gateway (o roteador com acesso à Internet) para encaminhar ou DMZ :22 para o host KVM na porta configurada em seu reverso túnel.

Permanente e auto-suficiente:

  • Conecte as duas redes com um dispositivo de rede virtual, como tun , configure o gateway da mesma forma.

Fácil:

  • Existem serviços SaaS que fazem isso para você. Muitos têm camadas gratuitas que podem satisfazer o seu caso de uso.
por 18.08.2015 / 01:27