Introdução
O SSH, também conhecido como Secure Shell, pode ser usado para muito mais do que obter um shell remoto. Este artigo demonstrará como o SSH pode ser usado para encaminhamento de porta e proxy.
Os únicos pré-requisitos são um servidor OpenSSH (instalado por padrão nas imagens do Vultr Linux) e um cliente OpenSSH (disponível no Linux, BSD e MS Windows).
Objetivo
Um proxy SSH é usado principalmente para proxy do tráfego da web. Por exemplo, ele pode ser usado para proteger seu tráfego da Web contra uma rede local insegura.
O encaminhamento de porta SSH é frequentemente usado para acessar serviços que não são acessíveis ao público. Por exemplo, você pode ter uma interface da web de administração do sistema em execução no servidor, como o Webmin, mas apenas escutando conexões no host local por motivos de segurança. Nesse caso, você pode usar o SSH para encaminhar conexões em uma porta escolhida da sua máquina local para a porta na qual o serviço está atendendo no servidor, garantindo assim acesso remoto a esse serviço específico através do túnel SSH. Outro cenário comum em que o encaminhamento de porta SSH é usado, é acessar serviços em uma rede privada remota por meio de um túnel SSH para um host nessa rede privada.
Uso
O proxy e o encaminhamento de porta não requerem nenhuma configuração especial em seu servidor. No entanto, o uso da autenticação baseada em chave é sempre recomendado com SSH. Leia Como faço para gerar chaves SSH.
Proxy SSH
Criar um proxy SSH é muito simples, a sintaxe geral é a seguinte:
ssh -D [bind-address]:[port] [username]@[server]
Onde [bind-address]está o endereço local para escutar, [port]é a porta local para escutar, [username]é o seu nome de usuário no servidor e [server]o endereço IP ou o nome do host do seu servidor. Se [bind-address]não for especificado, o SSH usará como padrão o localhostque é desejável na maioria dos casos.
Aqui está um exemplo prático:
ssh -D 8080 root@your_server
Para usar esse proxy, você deve configurar o navegador para usar SOCKSv5como tipo de proxy e 8080como porta de proxy.
Encaminhamento de porta SSH
A sintaxe geral do comando é a seguinte:
ssh -L [localport]:[remotehost]:[remoteport] [username]@[server]
Onde [localport]está a porta na qual o cliente SSH atenderá, [remotehost]é o endereço IP do host para o qual as conexões serão encaminhadas. Isso seria 127.0.0.1se você estivesse encapsulando conexões com o servidor. Por fim, [remoteport]é o número da porta no servidor usado pelo serviço ao qual você está se conectando.
Exemplo 1:
Considere ter um serviço da Web importante em execução na porta 10000do servidor, mas não é acessível ao público. O comando a seguir seria usado para estabelecer um túnel SSH para esse serviço.
ssh -L 80:127.0.0.1:10000 root@your_server
Agora você poderá se conectar digitando http://127.0.0.1no navegador local.
Exemplo 2:
Você tem dois servidores Vultr em uma rede privada. Um está executando uma distribuição Linux, o outro está executando o MS Windows. Na instância do Windows, um servidor RDP está sendo executado, mas não exposto à Internet, por motivos de segurança. Supondo que 192.168.1.5seja o endereço IP privado da máquina Windows, você pode usar o seguinte comando para conectar-se ao servidor da Área de Trabalho Remota por meio de uma porta no seu computador:
ssh -L 3389:192.168.1.5:3389 root@your_server
Qualquer conexão RDP do seu computador para ele agora será encapsulada no servidor Linux para o servidor Windows.