Qual é a diferença de funcionalidade entre os dois? Estou um pouco confuso com isso.
O encaminhamento local disponibiliza uma porta remota localmente.
O encaminhamento remoto disponibiliza remotamente uma porta local.
Mas essa 'disponibilidade' funcionará nas duas direções ... ou funciona?
Por exemplo, o seguinte (emitido a partir de um host 'casa')
ssh -R 1234:localhost:2345 user@work
Isso estabelecerá um túnel seguro entre work :: 1234 e home :: 2345, certo?
Se eu colocar alguma coisa em uma extremidade, ela sairá na outra extremidade.
Mas, então, posso conseguir o mesmo com a seguinte chamada do host 'trabalho':
ssh -L 1234:localhost:2345 user@home
Então, a única diferença é de onde eu chamo, certo?
ssh
ssh-tunnel
nandaloo
fonte
fonte
Respostas:
A principal diferença prática é que, se conectar 2 computadores A e B, e B estiver atrás de um firewall ou roteador NAT que você não controla, e está bloqueando a entrada ... Você está sentado em A. Você não pode obter A para conectar-se a B. Mas B não bloqueia a saída .. Então você faz com que B se conecte a A.
- clarificação adicionada--
O acima exposto, que o questionador entendeu .. significa a principal diferença prática entre o encaminhamento local e o remoto. ssh -L e ssh -R quando você usasse cada um. Eu não estava comentando os comandos de exemplo específicos que ele deu, onde ele alterna -L e -R e a qual servidor sshd ele se conecta. Mas agora tentarei comentar sobre isso. Com os comandos ssh que ele deu, da perspectiva do cliente e do servidor regulares, parece não haver diferença, pois não diz "ah, este é um cliente ssh e este é um servidor ssh .. "ele não conhece ssh, e qual é o aspecto cliente / servidor do ssh é irrelevante e desconhecido para o cliente e servidor regulares também. Eles se preocupam apenas com quem está ouvindo e, da perspectiva deles, parece o mesmo. O computador do trabalho está escutando e em 1234. Eles não observe que, em um caso, é um servidor sshd.exe ssh e, no outro, é um cliente ssh.exe, ssh. A propósito, onde está o cliente ssh, é considerado local.
fonte
Sim, se eu entendi direito, o encaminhamento de porta local de a para b deve ser idêntico ao encaminhamento de porta remota de b para a (e vice-versa). Um túnel de saída de a para b (visualizado em a) deve ser igual a um túnel de entrada de a para b (visualizado em b).
O encaminhamento de porta local cria um túnel de saída que pode ser usado para levar um computador público da Internet à máquina local. Um usuário local pode acessar uma combinação host: porta remota em um host local, porque a porta especificada no host local (cliente) é encaminhada para o host e a porta especificados no lado remoto:
O encaminhamento de porta remota cria um túnel de entrada que pode ser usado para trazer um computador local para a Internet pública. Um usuário da Internet pode acessar uma certa combinação de host local: porta em um host remoto. A porta fornecida no host remoto (servidor) é encaminhada para o host e a porta fornecidos no lado local:
fonte
0x4a6f4672
significa?Com o encaminhamento de porta local, você (o cliente) abre um soquete de escuta no computador e conecta seu cliente de protocolo no nível do aplicativo a esse soquete. Agora a conexão é encaminhada pelo SSH para o servidor. O servidor se conecta ao host remoto e encapsula os dados do seu cliente de protocolo para o destino final.
Com o encaminhamento de porta remota, o servidor abre um soquete de escuta no host do servidor. Alguns aplicativos remotos se conectam a esse host e enviam informações que são transferidas para o seu computador cliente. Aqui, a conexão é estabelecida com o destino final (algum servidor de protocolo no nível do aplicativo em execução no seu computador ou na sua rede) e os dados são transferidos do aplicativo remoto para o destino final.
fonte
Isso é melhor compreendido com pequenos exemplos. Nesses exemplos, as conexões são estruturadas da seguinte maneira:
Servidor Local - (LAN) - Terminal ----- (SSH, geralmente via Internet) ----- Tunnel Endpoint - (LAN) - Máquina Remota
Você usa o encaminhamento de porta local se desejar encapsular para uma determinada máquina / porta remota, acessível pelo ponto final do encapsulamento ao qual você tem acesso ssh. Portanto, a porta dessa máquina remota também pode ser acessada localmente em seu próprio terminal, ou seja, http: // localhost: terminal_port /.
Isso é feito usando a seguinte sintaxe:
Você pode usar o encaminhamento de porta remota se desejar habilitar QUALQUER UM (!) Remoto, capaz de acessar a porta de escuta do ponto final do túnel para poder acessar remotamente um ip / porta na LAN local. Para o servidor local, parece que a conexão da máquina remota foi iniciada pelo terminal.
A sintaxe é:
fonte
A página de manual para socat esclarece isso muito bem. Sim, eu sei que ssh e socat são duas coisas completamente diferentes - mas a documentação do socat é simplesmente muito boa.
fonte