Como usar SSH quando seu roteador bloqueia que você faça conexões à porta 22

Alguns roteadores distribuídos pela NET (como alguns da marca TechniColor, mas possivelmente outros) estão bloqueando conexões para a porta 22, o que atrapalha bastante quem precisa fazer conexões via SSH.

A solução óbvia para o problema seria reconfigurar o roteador. Porém, a NET parece estar dificultando cada vez mais o acesso aos roteadores dela.

E é difícil explicar na central de relacionamento que você precisa do usuário e senha para acessar a configuração do roteador e por que você precisa disso… eu tentei, mas acho que meu interlocutor entendeu que eu queria a chave do Wi-Fi e no fim não consegui nada!

Então, sem paciência para resolver o problema da forma correta, resta fazer gambiarras. Felizmente, tais gambiarras podem também ser usadas em outros lugares que bloqueiam conexões para a porta 22 (por exemplo, algumas universidades, escolas e aeroportos, locais de trabalho etc).


A gambiarra trivial seria usar alguma VPN, mas isso não valeria um post.

Então, aqui quero falar de outras duas que encontrei buscando uma solução mais elegante para o problema.

A primeira requer que você possa mudar a porta SSH de algum servidor que tenha acesso

Se você puder mudar o SSH para uma porta alternativa (tipo 2222) em algum servidor alice.com em que você seja root, pode usá-lo como túnel (ok, essa solução é meio parecida com VPN, mas foi mais fácil & barata no meu caso).

Para mudar a porta nesse servidor é só editar /etc/sshd_config, mudar a linha Port 22 para Port 2222 e reiniciar o serviço do SSH — algo como service ssh restart (a depender da distribuição que você estiver usando).

Aí, pra usar esse servidor como túnel, você pode fazer duas coisas (do lado do cliente).

Se você só quer acessar um servidor bob.com, pode usar, como sugerido aqui:

$ ssh -N -L 3333:bob.com -p 2222 alice.com

# em outro terminal
$ ssh -p 3333 127.0.0.1

Se você quer acessar vários servidores — não só bob.com, mas também charlie.com (me parece mais útil), pode criar um proxy do tipo SOCKS num terminal e usá-lo em outros:

$ ssh -D 3333 -N -p 2222 alice.com

# em outros terminais
$ ssh -o ProxyCommand='nc -x 127.0.0.1:3333 %h %p' bob.com
$ ssh -o ProxyCommand='nc -x 127.0.0.1:3333 %h %p' charlie.com

Pra evitar lembrar da sintaxe desse ProxyCommand, que usa netcat e copiei daqui, você poderia adicioná-lo em ~/.ssh/config:

ProxyCommand nc -x 127.0.0.1:3333 %h %p

Aí, depois de criado o túnel, basta usar SSH normalmente:

$ ssh -D 3333 -N -p 2222 alice.com

# em outros terminais
$ ssh bob.com
$ ssh charlie.com

A segunda é para caso você só precise acessar GitHub e Bitbucket

Resolve o problema pra maioria dos usos de Git via SSH e o bom dela é que você pode fazer uma vez e esquecer.

Felizmente, esses serviços disponibilizam servidores/portas alternativas que você pode usar para se conectar neles.

O GitHub oferece conexão SSH na porta 443 do servidor ssh.github.com; o Bitbucket oferece conexão SSH na porta 443 do servidor altssh.bitbucket.org.

Como 443 é a porta de HTTPS (TLS), é bem difícil essa porta estar bloqueada na rede em que você estiver.

Pra evitar ter que editar os remotes de todos os seus repositórios, você pode resolver o problema pra sempre adicionando o seguinte no seu ~/.ssh/config:

Host bitbucket.org
  HostName altssh.bitbucket.org
  Port 443

Host github.com
  HostName ssh.github.com
  Port 443

Se conhecer outras soluções interessantes, fique à vontade para compartilhar na caixa de comentários!

HOWTO: Como usar Pandora Radio no Brasil

O projeto Pandora é uma rádio on-line que funciona como um catálogo bem categorizado de milhares de CDs e é capaz de reproduzir músicas parecidas com o tipo que você diz para ele que gosta. Ficou confuso? É assim: eu entro lá e escrevo que gosto de Chico Buarque. Aí ele me diz: vamos tocar uma música do Chico que tem suas características principais como canto em português, violão leve, etc. Responda se você gostou ou não e baseado nessa escolha tocaremos outro estilo ou continuaríamos no mesmo.

É uma idéia muito legal porque no fim você ouve apenas o que gosta, mas também descobre novas músicas (porque ele não fica repetindo artista, álbum, música, mas só as características da música ou do artista que você selecionou a princípio).

Fazia tempo que eu não usava o Pandora porque num esforço comunitário de minha família, digitalizamos algumas centenas de CDs criando uma biblioteca de 35 gb em MP3. Porém, meu desktop (Durion 1.1) que era meu servidor de música (MPD) recentemente morreu (a placa-mãe deu pau) e, cansado de ouvir as poucas músicas que tinha aqui no laptop, resolvi ver como andava o Pandora.

Porém, fui surpreendido por uma mensagem dizendo que por causa de copyright brasileiros não podem mais usar o Pandora. Isso é um problema que eles dizem estar conversando com as autoridades para resolver, mas por hora não podem aceitar IPs brasileiros, o que me levou a buscar uma solução.

A primeira coisa que pensei foi procurar um servidor de proxy nos Estados Unidos. É fácil se você entrar no Public Proxy Servers, mas a velocidade deles realmente não me agrada, ainda mais pra ouvir uma rádio on-line. Então, pesquisei um pouco e depois de algum tempo encontrei a solução: SSH tunneling (túneis de SSH?)

Eu uso SSH todo dia e nunca tinha me dado conta que ele tem uma opção super interessante que é numa dada porta criar um tunelamento que pode ser usado como servidor SOCKS (proxy). Aí você pensa: mas qual a vantagem? De qualquer jeito você terá que usar um servidor proxy e ficar com a internet mais lenta. Sim, é verdade, mas o meu servidor na Dreamhost é sem dúvidas muito mais rápido que um proxy público e eu tenho certeza que minhas informações ficam seguras. Aliás, é por segurança que a maioria das pessoas usa SSH tunneling (ex.: pessoas com laptop numa rede wireless pública)

Vamos ao prático:

$ ssh -C -D 666 -N user@host

E configure seu navegador para usar Socks (eu usei V5, mas a V4 deve funcionar também) para o endereço: 127.0.0.1 (isso mesmo, não é o host que você colocou no SSH, é a sua máquina, porque ela que criou o servidor) na porta que você especificou com o parâmetro -D (nesse caso 666)

As opções do SSH que eu utilizei no exemplo são:

  • -C: comprime entrada e saída. Nos exemplos que eu peguei vinha, acredito que seja pras transferências serem mais rápidas.
  • -D [bind:]port: porta (e um endereço opcional) pro servidor rodar
  • -N: não executa nenhum comando (ie não abre um shell)

Esta dica funciona em sistemas operacionais que tem SSH (Linux, FreeBSD e provavelmente qualquer outro Unix-like). Para usá-la no Windows, você deve usar o PuTTy.

Troca de Servidor e “Semantic Blog”

Em primeiro lugar, quero pedir desculpa a quem entrou no meu site hoje e teve algum problema. Acontece que acabo de trocar de servidor. Depois de ver uma propaganda no Tableless.com.br, acessei o site da NerdHost e gostei dos preços e da qualidade do serviço. Por causa desses fatos e por eles estarem incentivando os padrões web (dão um mês gratuito pra quem desenvolve em tableless), fechei o contrato com eles no dia em que eu vi. :) Esse servidor usa CPanel, que eu acho bem melhor que o painel de controle da Metaweb e tem vantagens como um SSH que funciona SCP (acreditem! O da Metaweb não funcionava!), subdomínios ilimitados, PHP 5, MySql 4… Foi uma excelente troca! :D E ainda peguei o plano mais barato (limpei o servidor, consegui deixá-lo com 60mb), que custa R$ 5,67 (incrível a precisão do valor… hehehe).

Em segundo lugar: Eu, o Hélio e o Gustavo começamos a desenvolver um sistema de blog, em cima de classes, bastante parecido com o meu mas mais simples que tem como objetivo ser leve e possuir apenas o que é necessário. Ele já vai vir com um Shortstat bem modificado pra dar várias estatísticas (tipo, comentários por visitante, umas paradas assim) e com o GeSHi Highlighter. Os posts vão usar BBCodes e o blog vai ser baseado em templates. Resolvemos dar o nome “Semantic Blog”. Gostou? Deixe um comentário pra eu saber! Não gostou? Deixe um comentário também! :p Hehehe… Se você tiver qualquer sugestão de recurso interessante que ele deve ter, também fique a vontade para postar um comentário!

© 2005–2020 Tiago Madeira