Conexão SSH entre servidores Linux sem senha

Publicado por Rafael Mendes em 25/03/2009

[ Hits: 26.645 ]

Blog: http://www.linkedin.com/pub/rafael-mendes/23/799/6a4

 


Conexão SSH entre servidores Linux sem senha



Neste tutorial será apresentada uma maneira de efetuar conexões ssh entre servidores Linux sem a necessidade de informar a senha do root. Tais configurações foram efetuadas no sistema Debian GNU/Linux 4.0.

Hoje, quando trabalhamos com vários servidores e esses precisam executar conexões ssh via scripts, seja para a execução de um backup por exemplo, ao utilizar o comando "scp" temos que passar no script a senha do root, o que fica exposto de certa maneira, não sendo seguro e necessitando sempre da atualização da senha do root no seu script toda vez que do servidor é alterada.

Para resolver este problema podemos criar chaves públicas/privadas para que esta conexão ssh entre os servidores sejam fechadas, sem a necessidade de informar a senha de root. Tal tipo de acesso é seguro e criptografado.

Um ponto negativo é que um usuário logado com root no servidor "X" poderá efetuar uma conexão ssh no servidor "Y" sem a necessidade de informar a senha do root do outro servidor, pois os mesmos estão fechando uma sessão segura, porém a pessoa que está utilizando esta conexão deveria mesmo ter permissão para conectar no servidor "Y"?

Configurando

1. Geração da chave.

No servidor que originará a conexão, executar o comando abaixo para gerar a chave (nas opções apenas pressionar enter). O comando irá gerar a chave pública para conexão em /root/.ssh/id_rsa.pub:

# ssh-keygen -b 1024 -t rsa

2. Configurando chave para uso.

Copiar o conteúdo do arquivo /root/.ssh/id_rsa.pub para o servidor que receberá a conexão, colocando a chave copiada no arquivo /root/.ssh/authorized_keys (criar o arquivo caso não exista).

Desta maneira o servidor que receberá a conexão terá a chave pública do servidor de origem, liberando a sessão segura criptografada.

3. Reiniciando o serviço.

Reiniciar o serviço do ssh no servidor que receberá a conexão:

# /etc/init.d/ssh restart

4. Teste.

Efetuar o teste. Ao executar:

# ssh -p"Porta" "IP Destino" -lroot

O terminal não deverá pedir senha.

Se tudo ocorreu bem, agora entre estes servidores você tem uma conexão segura, não sendo necessário informar senha de root a cada conexão ssh.

Adicionando mais servidores

Para fechar conexão segura com outros servidores para o mesmo servidor de destino, basta seguir os mesmos passos para a geração da chave pública no servidor de origem e colocar o conteúdo do arquivo /root/.ssh/id_rsa.pub dentro do arquivo /root/.ssh/authorized_keys no servidor de destino.

Pode-se colocar as chaves uma embaixo da outra, também pode-se colocar comentários no arquivo /root/.ssh/authorized_keys para informar de que servidor é a chave por exemplo.

Informações adicionais

Explicando os parâmetros para a geração da chave:
  • ssh-keygen - é o comando para a geração da chave pública executada no servidor que originará a conexão;
  • -b 1024 - é a quantidade de bits que terá a chave, neste exemplo estamos gerando a chave com 1024 bits;
  • -t rsa - é o tipo de algoritmo usado para gerar a chave, a qual podendo ser RSA (Rivest, Shamir and Adleman) ou DSA (Digital Signature Algorithm).

Maiores informações referente a algorítimo DSA podem ser vistas em:
Maiores informações referente a algorítimo RSA podem ser vistas em:
Sobre criptografia... interessante: CIA - Confidencialidade, Integridade e Autenticação

Dúvidas? Estou a disposição.

Também visitem o meu blog, onde coloco vários posts.

Outras dicas deste autor

Problema: Dell OpenManage não faz login (refresh na tela) no CentOS 6.4 [Resolvido]

Tunning Squid - Para alto tráfego

Instalação do Dell OpenManage no CentOS 6.X

Instalando repositório RPMforge no CentOS 6.2

Compartilhamento NFS em Debian

Leitura recomendada

Syslog-ng enviar e-mail Realtime

Como instalar uma impressora térmica ARGOX OS214 no Linux

Uma dica importante para quem quiser migrar para o Linux

Particionamento no GNU/Linux

Comando which - Descobrir onde está o comando no Linux

  

Comentários
[1] Comentário enviado por xjc em 26/03/2009 - 02:19h

Rapa não aconselho deixar sem senha , isso pode comprometer o servidor

[2] Comentário enviado por rafael.mendes em 26/03/2009 - 09:27h

Primeiramente, muito obrigado pela sua opinião Julio.

Para esclarecer, na verdade seu servidor não ira ficar sem senha... todos os outros cliente os quais não tem suas chaves publicas cadastradas no servidor, será solicitado usuário e senha normalmente. Apenas não será solicitado usuário e senha para os servidores que fecharem conexão ssh tendo suas chaves públicas cadastradas no servidor que ira receber a conexão.

[3] Comentário enviado por kieronny em 11/11/2011 - 16:48h

Cara, tu me ajudou um monte. Estava implementando a execução de um bashscript para ejetar a fita após o backup, só que a unidade de fita estava localizada em um servidor o bacula em outro. Precisava que o bacula ejetasse a fita no outro servidor. Tive que utilizar o recurso de ssh.
Valeu! Rafael



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts