SSH

Índice:




O que é SSH

O SSH (Secure Shell) é um programa para logar em um outro computador usando uma rede, para executar comandos em uma máquina remota, e para mover arquivos de um computador para outro. Ele fornece autenticação forte e comunicação segura sobre canais inseguros. Ele foi feito para substituir o rlogin, rsh e rcp.

O SSH proteje o usuário de bisbilhoteiros da rede que roubam pacotes, onde senhas e texto desencriptados podem ser lidos por pessoas inescrupulosas.

O SSH é muito usado para logar em um UNIX de uma máquina Windows, Mac ou mesmo outro UNIX, na qual o tradicional 'telnet' e 'rlogin' não podem fornecer criptografia da senha e da sessão.

Como usar o SSH

Usar o SSH é extremamente fácil. É só executar de um terminal o comando:

ssh usuário@servidor

Onde:

Você também pode especificar outras opções, olhe a página manual do ssh.

Usando chaves como método de autenticação

Ficar digitando a senha toda vez que você vai utilizar o SSH é extremamente desconfortável, além de menos seguro que o método de chaves, o qual listaremos agora.

O SSH pode utilizar-se do conceito de Chave Pública e Privada para fazer sua autenticação remota, para isso você tem que gerar seu par de chaves:

ssh-keygen -t tipo_chave
Onde o tipo_chave pode ser:

Para as diferenças entre a RSA e DSA, vide http://www.casamirador.com/sabbott/DSS%20v.%20RSA.html

Atenção 1: se você quer usar chaves com o intuito de não precisar digitar senha, então sua "passphrase" deve ser vazia! (somente tecle enter). Atenção 2: Fique avisado que isto acaba sendo inseguro, pois se alguém tiver acesso à máquina ele pode acessar qualquer site que faça parte deste tipo de identificação!

Para utilizar este recurso com os servidores do IC, de modo que da sua casa você acesse sem precisar digitar a senha, crie sua chave usando o tipo rsa1 e depois acressente o conteúdo do arquivo ~/.ssh/identity.pub à ~/.ssh/authorized_keys do servidor.

Resumindo:

# Criar a chave:
ssh-keygen -t rsa1
# Copie a chave para o servidor (aqui represento com o simples FTP -- QUE É INSEGURO!!! -- o ideal é fazer um túnel SSH como explicado em "Como usar um túnel SSH", logo abaixo):
cd ~
ftp xingu.ic.unicamp.br
ftp> put .ssh/identity.pub chave.pub
# Vá para o servidor (usando senha pela última vez!):
ssh ra123456@xingu.ic.unicamp.br
# Acrescente a chave à authorized_keys:
cat chave.pub >> .ssh/authorized_keys
rm chave.pub

O que é um túnel SSH

Muitos protocolos, como o IMAP(email), Pop3 (email), FTP (email), NNTP (news) e outros não se utilizam de criptografia alguma na identificação ou na sessão, ou seja, sua senha e o que você está digitando, lendo e fazendo fica "boiando" na rede. Qualquer leigo pode usar uma ferramenta como o Ettercap (http://ettercap.sf.net) pode ver tudo o que quiser. Vale a pena tentar usar o Ettercap para saber o perigo que uma transação descriptografada pode ser.

O SSH, por sua vez, pode fazer túneis de conexão criptografada sobre canais inseguros. Pode parecer complicado, mas a ídeia é que você pode criptografar qualquer transação entre um servidor que tenha SSH e um cliente. Para isso, você deve conectar-se ao servidor e especificar uma porta local na qual você se conectará, uma porta e um servidor para o qual você quer uma conexão segura.

Como usar um túnel SSH

Tudo fica mais fácil com exemplos:
ssh -L 8021:tigre.ic.unicamp.br:21 ra123456@tigre.ic.unicamp.br
Onde:

Agora, é só se conectar à máquina local, na porta 8021:

ftp localhost 8021

Mais um exemplo, agora definindo vários servidores ao mesmo tempo:

# Configurar túneis:
ssh -L 8021:tigre.ic.unicamp.br:21 -L 5432:baiacu.lab.ic.unicamp.br:5432 ra123456@tigre.ic.unicamp.br
# Conectar ftp do tigre:
ftp localhost 8021
# Conectar-se ao banco de dados PostgreSQL da baiacú:
psql -h localhost -U ra123456

Dicas

Referências



Autor: Gustavo Sverzut Barbieri <ra008849 arroba ic.unicamp.br>