Conexão SSH através de um túnel SSH reverso (remoto)

1

Esta é a configuração que tenho:

  • uma caixa do Linux A dentro de uma LAN atrás de um firewall.

  • um servidor Linux com um endereço IP fixo acessível pela internet.

Eu quero ser capaz de se conectar à caixa do Linux que está por trás de um firewall de longe via ssh. Eu li sobre tunelamento ssh e ocorreu-me que esta poderia ser a minha solução. Eu consegui abrir um túnel ssh remoto entre o A e o B. Mas não consigo descobrir como usar este túnel para controlar o A via ssh ou se é mesmo possível. por exemplo: conectar do meu laptop a A via B.

Este é o comando que entendi para abrir o túnel:

ssh -R 2022:localhost:22 user@serverB

(pedidos via porta 2022 transferidos para a porta 22 (ssh) na máquina de destino) via user @ serverB.

Depois de abrir este túnel, quais devem ser as ações para conectar via ssh à máquina de destino?

Por favor, corrija-me se meu entendimento estiver errado aqui.

    
por Ethan 30.05.2015 / 17:47

2 respostas

2

O que você está se referindo é "SSH REMOTE FORWARDING", e é explicado corretamente no " man ssh ", com relação à opção " -R ".

> man ssh
[...]
 -R [bind_address:]port:host:hostport
    Specifies that the given port on the remote (server) host is to 
    be forwarded to the given host and port on the local side.
    This works by allocating a socket to listen to port on the remote 
    side, and 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 local machine.
    [...]

No seu contexto, onde:

  • uma caixa Linux A (LINUX_BOX_A) dentro de uma LAN atrás de um firewall.
  • um servidor Linux B (SERVER_B) com um IP fixo acessível a partir da Internet

O encaminhamento remoto do SSH pode ser usado para acessar o LINUX_BOX_A de SERVER_B. A única condição é: LINUX_BOX_A DEVE poder se conectar via SSH a SERVER_B.

Para atingir esse objetivo, você precisa:

  1. em LINUX_BOX_A:

LINUX_BOX_A:~ $ ssh -R 2222:localhost:22 user@SERVER_B

isto irá abrir uma conexão ssh de LINUX_BOX_A para SERVER_B que será usada para a conexão remota de entrada.

Após a conexão ssh acima ser estabelecida, você pode:

  1. em SERVER_B:

SERVER_B:~ $ ssh -p 2222 user@localhost

tal conexão-ssh, lançada em SERVER_B, será direcionada para a porta 2222 escutando no localhost que ... é ligado à conexão ssh anterior. Então, isso será uma "conexão ssh dentro de outra conexão ssh".

Algumas notas adicionais:

  • considere que, se a primeira conexão ssh expirar e / ou cair por qualquer motivo (incluindo: morto por firewall local, devido a inatividade), você não conseguirá redirecionar remotamente / remotely_connect; / p>

  • como é importante deixar a primeira conexão ssh ativa por muito tempo, você pode achar útil lançar tal ssh dentro de um " tela " sessão

Uma nota final: Obviamente, todos os itens acima têm algumas implicações de segurança (potencialmente graves) que estão fora do escopo desta resposta.

    
por 31.05.2015 / 00:00
0

Se você controla o firewall, pode usar o port-fowarding para evitar o uso de um reverse-ssh (será mais estável).

    
por 30.05.2015 / 23:26