SSH, mais do que um shell seguro

SSH (Secure Shell) é um protocolo que nos ajuda a acessar computadores remotos com segurança, basicamente como o Telnet, mas usando algoritmos de criptografia que nos ajudam a manter nossa conexão segura, especialmente se quisermos acessar computadores que desempenham alguma função importante dentro de uma organização.

Geralmente, para acessar devemos fornecer nosso nome de usuário e o endereço do computador, para que o servidor SSH nos solicite a senha de acesso:

ssh usuario@equiporemoto

A partir do momento em que o cliente inicia a primeira ligação entre o computador remoto e nós, a informação já está a viajar com segurança, impedindo que alguém obtenha as nossas credenciais de acesso ao referido computador, no entanto o SSH é um protocolo muito adaptável que nos oferece muitas possibilidades.

SCP

A primeira delas é poder transferir arquivos entre o cliente e o computador remoto, sem a necessidade de montar um servidor FTP ou NFS, simplesmente utilizando SCP (Secure CoPy) que a maioria dos servidores SSH implementa:

scp archivo.tar.gz usuario@equiporemoto:/home/usuario
scp usuario@equiporemoto:/var/log/messages messages.txt

Tunelamento SSH

Esta funcionalidade é muito útil, pois permite enviar e receber informações que não são necessariamente comandos de shell entre o cliente e o computador remoto, por exemplo, navegação normal. Se você não adivinhar que utilidade isso pode ter, pense no seguinte: você precisa acessar uma página, mas o local onde você está tem um firewall implementado que bloqueia exatamente essa página, portanto, podemos fazer 'tunelamento' com um controle remoto computador que não tem os referidos blocos e navegando na referida página através de nossa sessão SSH:

ssh -D 8888 usuario@equiporemoto

Uma vez conectado, nosso cliente SSH 'escuta' na porta 8888 como um servidor proxy, para que possamos configurar nosso navegador e todo o tráfego seja transmitido através da sessão SSH

Túnel SSH

Outro exemplo que me ocorre é quando, devido a alguma restrição geográfica, não conseguimos acessar um serviço web de onde estamos, ao fazer o túnel, esse serviço detecta como fonte o IP do nosso servidor remoto, não o IP do cliente. Isso é um pouco equivalente a VPNs (rede privada virtual)

SSH reverso

Se por algum motivo precisamos acessar um computador que está atrás de um firewall e ele não nos permite redirecionar o tráfego SSH para ele, podemos fazer um 'SSH reverso', de forma que esse computador se conecte a outro servidor SSH, ao qual também podemos nos conectar, para acessar o equipamento atrás do firewall. Um exemplo que vem à mente é quando queremos ajudar um amigo que não tem ideia de como configurar um redirecionamento em seu modem, mas precisamos acessar seu computador remotamente:

Amigo -> Modem -> Servidor SSH <- Sobre nós

As etapas a seguir são relativamente muito simples:

Amigo
ssh -R 9999:localhost:22 usuario@servidorssh

Quem somos
ssh usuario@servidorssh
Uma vez dentro do servidor SSH, podemos nos conectar com a equipe de nosso amigo usando
ssh amigo@localhost -p 9999

Como você pode ver, toda a mágica está no parâmetro -R, que informa ao servidor intermediário que na porta 9999 o computador de nosso amigo está escutando agora como um servidor.

Essas são apenas algumas possibilidades que o SSH nos oferece, mas convido você a experimentar algumas mais, por exemplo; podemos fazer scripts autônomos usando chaves RSA, redirecionar sessões X (modo gráfico) para nosso ambiente gráfico, apenas para citar alguns.


Adicionar como fonte preferencial no Google