Quando trabalhamos em servidores remotos frequentemente precisamos fazer diversas operações em sequência usando os comandos ssh, scp, rsync, etc. Um dos maiores incovenientes é ter que digitar a senha a cada execução de um comando. Neste post ensino como criar uma chave de autenticação usando SSH que permite o login sem senha.
Neste tipo de autenticação uma chave privada fica armazenada na máquina A e para obter seu segredo é preciso digitar uma senha. Uma chave pública é armazenada na máquina remota B e ela só é "aberta" pelo segredo escondido em sua chave privada correspondente. Logo, é necessário "destravar" a chave privada somente no primeiro acesso.
A criação do par de chaves é feita pelo comando ssh-keygen:
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ~/.ssh/id_rsa.
Your public key has been saved in ~/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:0rOezO7MDuoyUEzTIDp8JrEswn6K7XIvvikRm1JbG1E Igor@rouennais
A chave privada foi armazenada em ~/.ssh/id_rsa
, enquanto a pública está em ~/.ssh/id_rsa.pub
. Para permitir o login em B com o usuário user sem senha a partir de A basta adicionar o conteúdo de ~/.ssh/id_rsa.pub
em A no fim do arquivo ~user/.ssh/authorized_keys
na máquina B.
$ cat ~/.ssh/id_rsa.pub | ssh user@B 'cat >> ~/.ssh/authorized_keys'
Com isto, qualquer operação que involva ssh (scp, rsync, sshfs, etc) pode ser realizada sem senha. Isto inclui, inclusive, bibliotecas como a Paramiko, que permite acessar máquinas remotas usando Python.
Nenhum comentário:
Postar um comentário