Utilizando chaves públicas no SSH e SCP

Publicado por Rodrigo Rezende em 11/08/2009

[ Hits: 70.670 ]

Blog: http://www.rrezende.com.br

 


Utilizando chaves públicas no SSH e SCP



Criando e configurando chaves públicas no SSH

Transferir arquivos entre computadores utilizando ssh e scp é uma funcionalidade bastante útil em certos momentos. Porém essa transferência requer uma autenticação usualmente feita através de senha, isso impossibilita que a transferência de arquivos entre hosts possa ser feita automaticamente, sem intervenções.

Para evitar a requisição de senhas nas transferências ou mesmo nas sessões ssh, é possível gerar chaves públicas de acesso e criptografar os dados de maneira direta. São geradas duas chaves: uma pública que ficará nos hosts que aceitarão o arquivo e uma privada, que pertencerá apenas ao host que envia. Dessa forma sempre que requisitar uma conexão ssh ou uma transferência scp entre os hosts que possuem as chaves, não será necessário digitar a senha.

Essa operação deve ser utilizada com cuidado, pois gera uma alta confiança entre os dois computadores envolvidos. E se a chave pública for compartilhada com outros hosts, ao comprometer a chave privada, automaticamente todos os outros também estarão vulneráveis.

Para configurar isso é necessário que o host de destino do arquivo possua um servidor ssh executando em uma determinada porta (geralmente a 22). Com isso devemos fazer algumas alterações no arquivo de configuração do servidor ssh:

# vi /etc/ssh/sshd_config

Nesse arquivo devemos ter essas linhas descomentadas:

PubkeyAuthentication yes
AuthorizedKeysFile     %h/.ssh/authorized_keys

Por sua vez, no cliente, devemos observar o arquivo /etc/ssh/ssh_config:

# vi /etc/ssh/ssh_config

E observar se as seguintes linhas estão presentes e descomentadas, caso não estejam, as inclua:

IdentityFile ~/.ssh/identity
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_dsa

Depois de confirmado a configuração do cliente e do servidor, agora é necessário gerar as chaves. Ainda no cliente, gere as chaves com o comando:

ssh-keygen -t dsa

O resultado deve ser assim:

Generating public/private dsa key pair.
Enter file in which to save the key (/home/rodrigo/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/rodrigo/.ssh/id_dsa.
Your public key has been saved in /home/rodrigo/.ssh/id_dsa.pub.
The key fingerprint is:
d7:b5:86:ec:53:19:53:49:93:1a:b1:57:94:b3:13:53 rodrigo@pandora

A "passphrase" é opcional, pode deixá-la em branco se preferir (eu não prefiro).

Agora verifique se as chaves foram geradas e se estão no diretório .ssh do seu usuário:

cd /home/rodrigo/.ssh
$ ls

id_dsa  id_dsa.pub  known_hosts

Verificado que foi tudo gerado, é a hora de instalar s chaves no servidor ssh. Para isso vamos utilizar scp, mas nada impede que possa ser feito de outra maneira. Dessa vez ainda será requisitada a senha para transferência.

cd .ssh
$ scp id_dsa.pub rodrigo@servidor:/home/rodrigo/


Conecte-se ao servidor, observe o arquivo e instale ele no local exato. Primeiro observe se existe o diretório .ssh no seu usuário, para isso utilize o comando:

ls -la

Caso não exista, a crie:

mkdir /home/rodrigo/.ssh
$ chmod -R 700 /home/rodrigo/.ssh


Copie o arquivo da chave pública para o arquivo que o servidor irá observar:

cat /home/rodrigo/id_dsa.pub >> /home/rodrigo/.ssh/authorized_keys

Pronto, assim simples! Agora as conexões de ssh e scp não devem mais requerer senha. Faça alguns testes e observe o novo comportamento, caso ainda esteja requerendo senha, tente reiniciar o servidor ssh ou rever se foram feitos todos os passos.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Cacti em distribuições Debian - Instalando plugins

Ralink RT2570 no SuSE 9.x

Counter Strike 1.6

Arch Linux - Limpeza de pacotes

O pacote mtools

  

Comentários
[1] Comentário enviado por marcovinycios em 06/06/2013 - 09:56h

Uma, duvida. É possível utilizar a conexão com chaves pública entre dois servidores de forma redundante? ou seja:

- Em caso de ter 2 servidores, fazer a mesma operação para gerar a chave pública em ambos;
- Colocar a chave pública do server 1 no server dois e vice versa;

Outra dúvida, como o nome dos arquivos gerados são iguais, se eu renomear um arquivo de chave pública gerado no server 1 e colocar ele no server 2 no mesmo diretório que foi gerado o arquivo de chave pública no server 2 para o server 1 funciona?

Meu problema é que tenho dois servidores que precisam se comunicar por ssh porém os arquivos gerados para conexão com chave pública e privada tem o mesmo nome e ficam hospedados no mesmo diretório e quando for colocar a chave de um server no outro como os arquivos tem o mesmo nome vão ser subscritos, Por isso a minha pergunta sobre renomear os arquivos



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts