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.
Nota: Este artigo é um a versão reduzida do artigo bônus do curso Shell Script Para Programadores. Para conhecer melhor o curso e fazer sua matrícula, clique aqui.
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.
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 rsa |
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 destino |
Por 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.
Para aprender mais sobre Comandos Linux e Shell Script, veja meu curso Shell Script Para Programadores. Um dos 3 bônus é o artigo completo sobre SSH e chaves RSA e DSA.
Roberto Beraldo
Latest posts by Roberto Beraldo (see all)
- Não Tenha Preguiça de Ler! - 25/04/2016
- Como Atualizar Scripts PHP de MySQL Para MySQLi - 29/10/2015
- Como usar PDO com banco de dados MySQL - 10/09/2015