• ssh com chave privada

    Data:2010.07.14 | Categorialinux, redes, servidores, utilidades | Tags: ,,,

    No mundo Linux o protocolo ssh é muito utilizado para administração remota e transferência segura de arquivos entre hosts, sendo na maioria servidores. Acredito que sua ampla adoção se deve à simplicidade, velocidade e segurança. Por padrão, na maioria das distribuições Linux ele usa autenticação por senha e um par de chaves públicas.

    Outro método de autenticação seria por meio de um par de chaves pública e privada. Nesse método, cada cliente possui uma chave privada que o identifica e deve ser protegida. O servidor recebe a chave pública correspondente de cada cliente para autenticar. Desta forma, não há, à princípio, necessidade de senha. Porém, o próprio certificado pode exigir uma senha para ser acessado, mas assim, ele será único para todos os servidores e não haverá tráfego de senha entre servidor e cliente. Vejamos como fazer isto:

    No cliente, é preciso gerar as chaves com o seguinte comando:

    ssh-keygen

    Ele perguntará por uma senha. Caso queira fornecer, digite-a. Caso queira que o acesso seja direto, deixe em branco. Por padrão, ele gerará dois arquivos: ~/.ssh/id_rsa e ~/.ssh/id_rsa.pub. Respectivamente eles são a chave privada e pública em algorítmo RSA. Copie a chave pública para o servidor (assumindo que o IP dele é 10.0.0.8):

    scp ~/.ssh/id_rsa.pub 10.0.0.8:~

    No servidor, insira a chave pública recém recebida na lista de chaves autorizadas:

    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

    Feito isto, basta alterar o modo de autenticação do servidor. Acesse o arquivo de configuração /etc/ssh/sshd_config e altere, acrescente ou descomente as seguintes opções para que confira com o modelo:

    # Define autenticação por chave pública RSA.
    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile     .ssh/authorized_keys
    
    # Desabilita autenticação por senha
    PasswordAuthentication no
    PermitEmptyPasswords no
    

    Reinicialize o serviço do ssh. No Slackware execute /etc/rc.d/rc.sshd restart. Agora está pronto, basta testar. No cliente, pode-ser conectar usando duas sintaxes:

    ssh 10.0.0.8

    Use o exemplo acima caso o nome do arquivo e caminho da chave seja o padrão, ~/.ssh/id_rsa. Se for diferente, a seguinte sintaxe será necessária:

    ssh -i <caminho completo para chave privada> 10.0.0.8

    Para mais informações, o bom e velho man sempre ajuda.