Compreendendo túneis SSH

15

Eu tenho servidor linux (Ubuntu) ao qual tenho acesso root apenas através do ssh (porta 22). Nesse servidor, há um banco de dados MySQL escutando na porta 3306. É possível usar o putty (na minha máquina) e o tunelamento (na máquina linux) para criar um túnel a partir de uma porta local na minha máquina (por exemplo, 4000), para o servidor linux na porta 22 e depois do servidor para si mesmo na porta 3306?

Muhammad Gelbana
fonte

Respostas:

20

Eu desenhei alguns esboços

A máquina em que o comando ssh tunnel é digitado (ou no seu caso: Putty com tunelamento é iniciada) é chamada »seu host« .

túnel ssh a partir do local


túnel ssh a partir do controle remoto

Introdução

  1. local: -L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.

    ssh -L sourcePort:forwardToHost:onPort connectToHostsignifica: conectar com ssh ae connectToHostencaminhar todas as tentativas de conexão para o local sourcePort a porta onPortna máquina chamada forwardToHost, que pode ser acessada a partir da connectToHostmáquina.

  2. controlo remoto: -R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.

    ssh -R sourcePort:forwardToHost:onPort connectToHostsignifica: conectar com ssh connectToHoste encaminhar todas as tentativas de conexão para o controle remoto sourcePort na porta onPortda máquina chamada forwardToHost, que pode ser acessada a partir da sua máquina local.

Seu exemplo

A primeira imagem representa sua situação. A caixa azul chamada your hosté a sua máquina Windows a partir da qual você inicia o Putty no servidor Ubuntu, chamado remotehostna minha imagem. Conexões à porta verde (no seu número de porta caso 4000) são encaminhadas para a porta MySQL rosa 3306do localhostda sua máquina servidor Ubuntu (ou seja, o servidor Ubuntu em si).

Para configurá-lo com o Putty

Inicie o Putty e insira as configurações de conexão usuais (nome do host ou endereço IP). Na árvore do lado esquerdo, navegue até

Conexão → SSH → Túneis

e crie um novo túnel local com a porta de origem 4000(123 na imagem) e o destino localhost:3306(localhost: 456 na imagem).

Não se esqueça de clicar em Adicionar .

Em seguida, volte à sessão e clique em Salvar para manter suas configurações para a próxima vez. Agora você pode usar a conexão salva para efetuar login no seu servidor e depois de efetuar login com êxito, toda vez que se conectar à porta 4000 em seu host, você realmente se conectará à porta 3306 no servidor Ubuntu.

criar túnel para a frente com massa

erik
fonte
Muito bom, obrigado pela ilustração. Compreendo que você adicionou túneis do tipo "remoto", que eu não cobri nas minhas respostas.
Guss
1
Esta resposta é impressionante
Mauricio Pasquier Juan
2
Resposta impressionante e muito ilustrativa +1
rkachach
1
Como isso tem tão poucos votos é uma pena.
Ryan Fisher
1
Eu amo esses esboços. A imagem vale mais que mil palavras.
Qartal
16

A resposta simples é sim, mas observe que o túnel é realmente iniciado no seu computador. A maneira como funciona é que você cria uma conexão SSH com o servidor (que é seguro) e instrui o SSH a ouvir uma porta do seu lado e encaminhar quaisquer conexões que entrarem - para uma porta específica em um endereço de host específico no servidor. lado do servidor. O destino do túnel não precisa ser o mesmo servidor - pode ser qualquer outro endereço válido, que - no caso de não ser o servidor que executa o próprio servidor SSH - verá a conexão de entrada como se tivesse vindo do servidor SSH em vez de do seu cliente.

Para configurá-lo, abra a caixa de diálogo Configuração do Putty, selecione a configuração da conexão que você normalmente usa para acessar o servidor e clique em "carregar" (e não em "abrir"). Em seguida, na árvore do lado esquerdo, navegue até Connection-> SSH-> Tunnels e crie um novo túnel "local" com a porta de origem 4000 e o destino "localhost: 3306" (porque o endereço de destino foi resolvido no servidor, do ponto de vista do servidor, a porta MySQL está no host local). Em seguida, volte para "sessão" e clique em "Salvar" para manter suas configurações para a próxima vez. Agora você pode usar a conexão salva para efetuar login no servidor e depois de efetuar login com êxito, toda vez que se conectar à porta 4000 no seu computador, você realmente se conectará à porta 3306 no servidor.

Se você gosta muito de túneis e está executando um cliente MS-Windows, sugiro examinar o Putty Tunnel Manager, que usa o Putty para configurar e executar túneis facilmente, sem a necessidade de ter um console de putty aberto.

Guss
fonte