O SSH (Secure Shell) é uma ferramenta muito útil na administração remota de sistemas baseados em Unix/Linux. Por meio dela, é possível fazer login em sessões remotas de shell, possibilitando gerir servidores à distância.
Demonstrarei aqui como usar o SSH por meio de linha de comando em Linux, porém há ferramentas para Windows com a mesma finalidade, como o PuTTY. Porém, não os abordarei.
Uma das principais vantagens do SSH sobre outras formas de acesso remoto é a ênfase em segurança.
É possível abrir uma sessão remota via SSH usando apenas a senha do shell de destino. Porém, uma forma mais segura de se fazer esse acesso é usando um par de chaves público/privado, o que aprimora a segurança da conexão. O funcionamento do par de chaves é semelhante ao que ocorre na vida real, com as assinaturas manuscritas: para que sua assinatura seja legalmente reconhecida, um cartório deve autenticá-la. No caso de assinaturas digitais, essa autenticação é feita por meio de uma passphrase. Ao gerar um par de chaves com o comando ssh-keygen, geram-se dois arquivos no diretório .ssh, dentro de sua home: id_dsa (ou id_rsa) e id_dsa.pub (ou id_dsa.pub). O arquivo finalizado por .pub representa sua chave pública, enquanto o outro contém sua chave privada. Sua chave privada deve ser visível apenas por você, logo, mantenha-a com permissão 600 (permissão padrão desse arquivo). Esse arquivo deve ser sigiloso, pois somente você deve ter acesso à sua chave privada. Já a chave pública pode, e deve, ser visível a qualquer máquina à qual você deseja ter acesso. O conteúdo o arquivo .pub deve estar no arquivo authorized_keys, dentro de $HOME/.ssh, no servidor que deseja acessar.
Quanto a DSA ou RSA, são apenas tipos diferentes de algorítmos para criptografia de chaves. No quesito segurança, as diferenças são ínfimas. Há distinção em termos de performance. Para passphrases extensas, DSA é mais eficiente que RSA. Mais detalhes podem ser encontrados com uma simples pergunta ao Todo Poderoso Google. Usarei DSA neste tutorial.
A passphrase não é utilizada para acessar o servidor remoto, como ocorre com a senha. A passphrase é uma senha utlizada para decodificar sua chave privada. Logo, pode haver uma passphrase diferente para cada chave que você possua, em máquinas diferentes que acessam o mesmo servidor remoto.
Para gerar um par de chaves, usamos o comando ssh-keygen:
$ ssh-keygen -t dsa
Serão solicitados o local onde as chaves devem ser geradas e o passphrase correspondente. Se você mantiver o caminho em branco, a chave será gerada no local padrão.
Após gerar o par de chaves, é necessário informar sua chave pública para o servidor remoto ao qual deseja ter acesso. Isso pode ser feito de duas formas:
1. Utilizando o comando ssh-copy-id, que copia a chave pública para o servidor remoto automaticamente:
$ ssh-copy-id -i ~/.ssh/id_dsa.pub login@servidor
2. Modificando o arquivo ~/.ssh/authorized_keys, do servidor remoto, adicionando, em uma nova linha, o conteúdo de seu arquivo id_dsa.pub. Isso é o que o comando anterior faz automaticamente.
Após isso, em vez de o servidor solicitar sua senha para autenticação, será solicitada sua passphrase para a respectiva chave.
Para acessar um shell remoto, apenas execute o comando a seguir, trocando "login" e "servidor" pelo login e o domínio, ou IP, do servidor remoto:
$ ssh login@servidor
O SSH usa a porta 22 para todo seu tráfego. Logo, o servidor remoto deve possuir essa porta aberta.
Após digitar sua passphrase, você estará em seu shell remoto.
Outra facilidade do SSH é a transferência segura de arquivos. Para isso, podemos usar o comando scp ou o próprio sftp, que é um FTP completo, porém, usando protocolo seguro.
Para tranferir arquivos com scp, procede-se da mesma forma como procedemos com o comando cp, localmente:
$ scp origem destinoPor exemplo:
$ scp meu_arquivo_local beraldo@rberaldo.com.br:~
Isso copia o arquivo meu_arquivo_local para a minha home no servidor rberaldo.com.br
Outro exemplo:
$ scp beraldo@rberaldo.com.br:~/arquivo_remoto .
Isso copia o arquivo arquivo_remoto, do servidor, para o diretório local corrente.
Para iniciar o sftp:
$ sftp login@servidor
Isso inicia um FTP, com protocolo de segurança.
Mais informações podem ser vistas nos links abaixo:
Artigo na Wikipédia sobre SSH (em inglês)
Artigo no Guia do Hardware sobre SSH







Excelente artigo, parabéns!
Sugestão: Como remover ou alterar o passphrase