Se você tiver sorte o suficiente para que seu provedor de serviços de Internet (ISP) forneça um endereço IP dedicado, você pode configurar um servidor doméstico e disponibilizá-lo para a Internet adicionando algumas regras de encaminhamento de porta ( encaminhamento ) ao roteador. Mas se o seu ISP forçar você a compartilhar esse IP com seus vizinhos, o encaminhamento de porta não ajudará. Outros provedores simplesmente bloqueiam as conexões de entrada por meio de regras de firewall.
Os usuários podem superar todas essas restrições com a ajuda de servidores virtuais privados. Tudo funcionará com menos de 512 MB de RAM, pois basta redirecionar o tráfego de rede. Não consome muita RAM e CPU. O servidor receberá conexões de entrada e as redirecionará para o computador através de um “ túnel SSH reverso ”. Desta forma você pode configurar qualquer tipo de servidor doméstico, por um custo mensal muito pequeno.
Imagine que você crie um servidor NextCloud para fazer upload ou sincronizar arquivos. Você protegerá a privacidade de seus arquivos quando eles estiverem em seu servidor doméstico e, se necessário, poderá comprar um disco rígido de 6 TB para aumentar a capacidade de armazenamento. A conta mensal de eletricidade é inferior a US$ 5/mês (115.000 VND) para um servidor virtual privado. Mais barato que a fatura mensal de um servidor com 6 TB de capacidade.
Nota : Este método é usado apenas para redirecionar o tráfego de rede TCP. TCP é usado pelo servidor web (porta 80/tcp). O UDP é usado por alguns (mas não todos) servidores de jogos, por exemplo Counter Strike (porta 27015/UDP). O tunelamento UDP também é possível, mas requer alguns truques.
Permite conexão externa ao PC
O Windows 10 agora tem um cliente SSH integrado
Não há mais necessidade de usar PuTTY para iniciar conexões SSH. Neste tutorial, usaremos o cliente SSH integrado para configurar o túnel. Leia o artigo: Como instalar o OpenSSH no Windows 10 da LuckyTemplates para saber mais.
Preparar servidor virtual privado para conexão de túnel
Crie um servidor virtual privado com seu provedor favorito. O mais importante é escolher um local de servidor o mais próximo possível para minimizar a latência da rede. Tente configurar o servidor de forma que você possa fazer login diretamente na conta root, de preferência com uma chave SSH, pois é mais seguro. Isso é necessário se você quiser fazer o servidor "escutar" conexões de entrada em portas abaixo de 1024, também conhecidas como portas privilegiadas.
Abra o prompt de comando (ou terminal se estiver usando Linux) e faça login no servidor via SSH.
Edite as configurações do servidor OpenSSH:
nano /etc/ssh/sshd_config
Se você não estiver logado como root, mas como usuário normal, você precisará usar este comando para poder salvar o arquivo:
sudo nano /etc/ssh/sshd_config
Role para baixo até encontrar a variável chamada GatewayPorts. Esta linha pode ficar assim:
#GatewayPorts no
Remova # (para alterá-lo de comentário para parte do programa) e altere a linha para:
GatewayPorts yes
Se você não conseguir encontrar esta linha, basta rolar até o final e adicionar a linha você mesmo:
GatewayPorts yes

Pressione Ctrl + X e, em seguida, pressione y e finalmente Enter para salvar o arquivo.
Recarregue o daemon SSH para que ele receba as novas configurações.
systemctl reload ssh.service
Saia da sessão SSH.
exit
Como configurar um túnel SSH reverso
Os parâmetros de comando são os mesmos no Linux, Windows e até mesmo no BSD. A sintaxe geral é:
ssh -R remote_port:host:localport your_username@IP-of-server
- remote_port diz ao servidor para redirecionar as conexões nessa porta.
- host informa ao servidor o endereço IP para o qual a conexão será redirecionada. 127.0.0.1 será usado aqui para redirecionar para o próprio computador do usuário.
- localport instrui para qual porta os pacotes devem ser redirecionados. Aqui, o usuário deve definir o número da porta na qual o aplicativo instalado no computador local está “escutando”.
Por exemplo, para encaminhar todas as conexões na porta 80 (para o servidor) e enviá-las para a porta 8080 no computador local, o comando seria:
ssh -R 80:127.0.0.1:8080 root@203.0.113.1
Isso pressupõe que você tenha um servidor web, como Apache ou Nginx, escutando localmente na porta 8080. Mas se o Apache/Nginx estiver escutando na porta padrão 80, então não há problema em usar a mesma porta duas vezes no comando anterior (porque eles estão se referindo à porta 80 em outro servidor).
ssh -R 80:127.0.0.1:80 root@203.0.113.1
Neste ponto, se alguém inserir o endereço IP do seu servidor virtual privado na barra de endereços do navegador, a conexão será redirecionada e controlada pelo seu computador local.
![Como usar o túnel SSH reverso para permitir conexões externas ao PC Como usar o túnel SSH reverso para permitir conexões externas ao PC]()
Na imagem acima, foi usado um servidor web simples para Chrome que escuta na porta 8887 por padrão. Os usuários podem tentar essa configuração instalando o aplicativo e usando o comando, conforme mostrado na imagem.
Vale ressaltar que para manter o túnel ativo, a sessão SSH deve permanecer ativa. Para fechar o túnel, digite exit em uma janela do Terminal ou Prompt de Comando.
Como você pode ver, criar um túnel SSH reverso não é difícil, mas proteger um site é diferente. Portanto, se você optar por implementar uma ideia como um servidor NextCloud local, isole-o pelo menos em uma máquina virtual. Dessa forma, se o site for hackeado, pelo menos o restante do sistema operacional não será prejudicado.
E outra coisa importante a lembrar é sempre fazer backup daquilo que você não quer correr o risco de perder!
Espero que você tenha sucesso.