ct

    SSH com login automático

    Dicas do Guia do Hardware

    Se você abre conexões SSH com frequência, sempre com as mesmas máquinas, já deve estar cansado de ter que ficar digitando seu password ou sua passphrase a cada nova conexão. A boa notícia é que existem não apenas uma, mas duas formas diferentes de automatizar o login no SSH, sem com isso abrir mão da segurança.Carlos E. Morimoto
    10/06/2008


    Se você abre conexões SSH com frequência, sempre com as mesmas máquinas, já deve estar cansado de ter que ficar digitando seu password ou sua passphrase a cada nova conexão. A boa notícia é que existem não apenas uma, mas duas formas diferentes de automatizar o login no SSH, sem com isso abrir mão da segurança.

    Para isso, deixaremos de utilizar senhas de acesso e passaremos a utilizar um par de chaves. Nesse sistema, a chave pública é instalada nos servidores que serão acessados e a chave privada (que nunca sai da sua máquina) é protegida por uma passphrase, sem a qual a chave se torna inútil.

    Para gerar o par de chaves, use (no cliente) o comando:

    $ ssh-keygen -t rsa

    Ele deve ser executado usando seu login de usuário (o mesmo que você usa para acessar os servidores remotos), não como root:

    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/morimoto/.ssh/id_rsa):
    Created directory '/home/morimoto/.ssh'.
    Enter passphrase (empty for no passphrase): ********
    Enter same passphrase again: ********
    Your identification has been saved in /home/morimoto/.ssh/id_rsa.
    Your public key has been saved in /home/morimoto/.ssh/id_rsa.pub.

    The key fingerprint is:
    ff:28:26:f6:87:67:9f:4c:9a:c8:0a:3b:21:81:88:b4 morimoto@athenas

    A passphrase pode ser desde uma senha "normal", com de 8 ou 12 caracteres, até uma frase complexa, sem limite de tamanho. O importante é que não seja algo fácil de adivinhar. A passphrase é, na verdade, um componente da chave de encriptação; sem ela é impossível usar a chave.

    O comando gerará os arquivos ".ssh/id_rsa" e ".ssh/id_rsa.pub" dentro do seu diretório home, que são, respectivamente, sua chave privada e sua chave pública. O ".ssh/id_rsa" é um arquivo secreto, que deve usar obrigatoriamente o modo de acesso "600" (que você define usando o chmod), para evitar que outros usuários da máquina possam lê-lo. Muitos servidores recusam a conexão caso os arquivos estejam com as permissões abertas.

    Depois de gerar seu par de chaves, falta o comando final, que instala a chave pública no servidor, permitindo que ela seja usada para autenticação:

    $ ssh-copy-id -i ~/.ssh/id_rsa.pub login@servidor

    Como o nome sugere, o comando "ssh-copy-id" copia sua chave pública, instalando-a no servidor. Ao usá-lo, substitua o "login" pelo seu login de usuário e o "servidor" pelo endereço IP ou o domínio do servidor.

    Ao ser executado, ele abrirá uma conexão via SFTP (ainda utilizando seu login e senha de acesso), que é usada para instalar a chave pública (o arquivo ".ssh/id_rsa.pub", dentro do seu home) no diretório correspondente do servidor. Naturalmente, para que a transferência funcione, é necessário que o SFTP esteja ativo na configuração do servidor.

    A partir daí, ao invés de pedir sua senha, o servidor envia um "desafio" encriptado usando a chave pública. Para respondê-lo, o cliente SSH na sua máquina precisa usar a chave privada, que por sua vez precisa ser destravada usando a passphrase. Mesmo que alguém consiga roubar sua chave privada, não conseguirá conectar sem saber a passphrase e vice-versa.

    Com a chave instalada, chegamos ao tema principal da dica, que é como automatizar os logins, fazendo com que você não precise mais digitar a passphrase a cada conexão.

    A primeira opção, menos segura, é simplesmente deixar a passphrase em branco na hora de gerar as chaves, o que faz com que o login passe a ser automático. Isso torna as coisas muito práticas, pois você pode escrever até mesmo scripts para copiar arquivos via SFTP, sem precisar se preocupar com senhas, mas não é necessariamente uma boa idéia, pois alguém que consiga copiar sua chave privada poderia ganhar acesso irrestrito a seu servidor. Isso não é algo tão corriqueiro quanto pode parecer, pois a chave privada nunca sai do seu micro. Para roubar sua chave privada, seria necessário que alguém efetivamente invadisse o sistema, ou tivesse acesso físico ao seu micro (para dar boot com o live-CD e copiar o arquivo para um pendrive), mas, de qualquer forma, não é bom dar sopa para o azar.

    Chegamos então à segunda opção, que consiste em usar o ssh-agent para salvar as passphrases na memória, sem com isso abrir mão da segurança. Ele funciona como uma espécie de "cache", onde você digita a passphrase apenas uma vez, depois de inicializar o sistema, e ela fica gravada na memória até que a sessão seja encerrada. A segurança não é prejudicada, pois a passphrase não é salva em lugar algum; fica apenas armazenada (de forma encriptada) em uma área protegida de memória, acessível apenas ao ssh-agent. Ao desligar o micro, tudo é perdido.
    Para usar o ssh-agent, abra um terminal e use os comandos:

    $ ssh-agent
    $ ssh-add

    Ele vai solicitar sua passphrase, como neste exemplo:

    Enter passphrase for /home/morimoto/.ssh/id_rsa: ********
    Identity added: /home/morimoto/.ssh/id_rsa (/home/morimoto/.ssh/id_rsa)

    A partir daí ela fica carregada na memória e você não precisa mais se preocupar até o próximo reboot. Uma forma prática de fazer com que os dois comandos sejam executados automaticamente durante a abertura do sistema, é adicioná-los em um atalho dentro da pasta ".kde/Autostart", dentro do seu diretório home, de forma que eles sejam executados automaticamente e você tenha apenas o trabalho de digitar a chave e dar Enter. Note que os comandos não devem ser adicionados no "/etc/rc.local" ou outro arquivo de inicialização, pois precisamos que os comandos sejam executados dentro do seu login de usuário e não pelo root.

    Concluindo, depois de gerar a chave e conseguir se conectar através dela, você pode desativar a possibilidade de fazer logins normais, usando senha. Nesse caso, apenas você, que possui a chave gerada, conseguirá se conectar ao servidor.

    Outras pessoas, mesmo que descubram a senha de alguma das contas, não terão como se conectar e nem como instalar uma nova chave para fazê-lo, a menos que tenham acesso físico ao servidor, a fim de copiar a chave manualmente. Isso significa que, mesmo alguém com a senha de root do seu servidor em mãos não conseguirá fazer nada remotamente (o sonho de todo administrador ;). Isso pode ser usado para incrementar a segurança.

    Para isso, mude as opções "PasswordAuthentication" e "UsePAM" para "no" no arquivo "/etc/ssh/sshd_config" do servidor:

    PasswordAuthentication no
    UsePAM no

    A opção "PasswordAutentication no" permite desativar o uso das senhas, como esperado, enquanto a "UsePAM no" reforça a configuração, desativando qualquer outra forma de autenticação com exceção das chaves.

    Para que as alterações entrem em vigor, reinicie o servidor SSH:

    # /etc/init.d/ssh restart

    ou:

    # service sshd restart




    » Gostou do texto? Veja nossos livros impressos

    ... ou use a busca para localizar outros artigos relacionados:

cb
Livros de Carlos E. Morimoto HOME