Conexões SSH sem senha fácil e descomplicado

Utilizando chaves públicas e privadas é possível realizar conexões SSH sem o uso de senhas, é possível também a execução remota de comandos, o que facilita alguns processos de automatização. Vale lembrar que esta não é uma configuração totalmente segura, por isto devem ser adotadas medidas alternativas para melhorar a segurança.

[ Hits: 323.628 ]

Por: Fernando Ribeiro em 26/01/2007 | Blog: http://www.vivaolinux.com.br/~fernandofat


Chaves públicas/privadas, o que são e para que servem?



São um par de chaves digitas que juntas fazem uma verificação de autenticidade das informações.

Para maiores informações visite o link:
O par de chaves é gerado no cliente.

A chave Privada não deve ser divulgada em hipótese nenhuma e a chave Pública pode e deve ser divulgada.

Nota: Este procedimento é voltado inteiramente para conexões SSH (existem outras aplicações de chaves Públicas/Privadas).

Gerando o par de chaves no cliente

No computador cliente execute o seguinte comando:

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key
(/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in
/root/.ssh/id_rsa.
Your public key has been saved in
/root/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

Quando perguntado para entrar com uma "passphrase", apenas tecle "Enter" duas vezes para que fique em branco, caso contrário esta frase precisará ser digitada posteriormente.

Agora as duas chaves foram geradas.

A chave Privada está em "/root/.ssh/id_rsa" e a Pública em "/root/.ssh/id_rsa.pub".

    Próxima página

Páginas do artigo
   1. Chaves públicas/privadas, o que são e para que servem?
   2. Configurando o servidor
   3. Execução remota de comandos
   4. Considerações finais
Outros artigos deste autor

Linux logando no Domínio NT

Configurando OpenSSH no Windows Server 2003 para autenticação por chave (sem senha)

Leitura recomendada

PuTTY - Release 0.66 - Parte IV

Gerenciamento de pacotes RPM (parte 1)

Instalando Apache, PHP e PostgreSQL no Slackware 12 (compilando)

Arch Linux - Instalação a partir de imagem híbrida

Usando Swap na RAM em Sabayon - ZRAM - Método novo

  
Comentários
[1] Comentário enviado por thelinux em 26/01/2007 - 14:12h

Parabéns pelo artigo. Bem útil.

[2] Comentário enviado por kyrme em 26/01/2007 - 14:16h

Não posso fazer o processo ao contrário, gerar um par de chaves no servidor e então divulgar a pública?!

[3] Comentário enviado por dailson em 29/01/2007 - 10:52h

Kyrme

Isso pode ser feito também!
Parabéns pelo artigo!

Dailson

[4] Comentário enviado por superrlp2 em 29/01/2007 - 20:59h

Beleza de artigo...parabéns!

[5] Comentário enviado por cainf em 24/02/2007 - 23:53h

Fiz exatamente todo o procedimento so que no meu Debian 3.1 não aparece esse arquivo authorized_keys aparece so o arquivo known_hosts
Falta algum outro pacote no meu caso ??
Obrigado a todos

[6] Comentário enviado por fernandofat em 26/02/2007 - 14:25h

cainf,

Quando você executa o comando "cat /root/id_rsa.pub >> /root/.ssh/authorized_keys" ele deveria criar o arquivo ou se já existe inserir o conteúdo nele.

Se não está criando verifique se o caminho existe, em alguns casos o diretório ".ssh" não existe dentro do home do usuário então é preciso cria-lo.

[]'s

Fernando

[7] Comentário enviado por hendrigo em 17/04/2008 - 13:43h

bom artigo. foi muito útil para mim.

[8] Comentário enviado por emerson.candido em 08/10/2008 - 17:02h

Fernando,

Ja utilizo o OpenSSH em estações Windows XP e Windows 2000 Server e autenticação por chaves é feita sem problemas, porém realizei o mesmo procedimento no Windows 2003 Server e quando vou fazer a autenticação por chaves simplesmente ele fechou a conexão, já tentei de várias formas repetir o procedimento, mudei de máquina instalei um 2003 do zero e fiz o procedimento igual uma máquina Windows XP que funciona e nada.
Existe alguma particularidade de segurança no Windows 2003 Server que pode impedir esse tipo de autenticação?

[9] Comentário enviado por fernandofat em 10/10/2008 - 14:26h

Emerson,

Já fiz algumas instalações no Windows Server 2003 e não encontrei problemas.

Você consegue se conectar usando o Putty com autenticação mesmo?

[]'s

Fernando

[10] Comentário enviado por emerson.candido em 12/10/2008 - 22:22h

Fernando,

Eu consigo autenticar com senha tranquilamente, o problema é quando eu vou fazer a autenticação por chaves.

Ele simplesmente fecha a conexão como se a chave estivesse incorreta, mas não é exibido nenhuma mensagem de erro nem mesmo no event viewer e nenhuma pasta do próprio OpenSSH, tentei até olhar a pastar C:\Program Files\Openssh\var\log, porém não há nada de relevante lá.

Também tentei gerar novas chaves, pois inicialmente estava usando do tipo DSA, depois mudei para RSA, mas não mudou nada, gerei-as com o ssh-keygen e depois através do PuttyGen.

Abaixo segue o meu sshd_config, veja se você consegue achar algo errado:

# $OpenBSD: sshd_config,v 1.65 2003/08/28 12:54:34 markus Exp $

# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options change a
# default value.

Port 22
#Protocol 2,1
Protocol 2
#ListenAddress 0.0.0.0
#ListenAddress ::

# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key

# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h
#ServerKeyBits 768

# Logging
#obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
PermitRootLogin yes

# The following setting overrides permission checks on host key files
# and directories. For security reasons set this to "yes" when running
# NT/W2K, NTFS and CYGWIN=ntsec.
StrictModes no

#RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFile etc/authorized_keys

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts yes
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
PermitEmptyPasswords yes

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCreds yes

# Set this to 'yes' to enable PAM authentication (via challenge-response)
# and session processing. Depending on your PAM configuration, this may
# bypass the setting of 'PasswordAuthentication'
#UsePAM yes

#AllowTcpForwarding yes
#GatewayPorts no
#X11Forwarding no
#X11DisplayOffset 10
#X11UseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#KeepAlive yes
#UseLogin no
UsePrivilegeSeparation no
#PermitUserEnvironment no
#Compression yes
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS yes
#PidFile /var/run/sshd.pid
MaxStartups 10:30:60

# default banner path
Banner /etc/banner.txt

# override default of no subsystems
Subsystem sftp /usr/sbin/sftp-server

[11] Comentário enviado por brunosilva.ti em 01/06/2009 - 14:40h

Parabens, funcionou perfeitamente!

[12] Comentário enviado por vlademiro em 10/07/2009 - 18:42h

Parabens, funcionou. Seu artigo é muito util, claro e prático.

[13] Comentário enviado por gdtec em 27/01/2010 - 17:03h

Muito bom artigo. Simples, prático e funcional. Obrigado!

[14] Comentário enviado por mirandamiranda em 09/02/2010 - 15:18h

Eu tenho uma dúvida:
O comando # ssh-keygen -t rsa deve ser executado no cliente. OK
Mas e se o cliente for Windows, o comando é o mesmo? Como devo proceder?

[15] Comentário enviado por fernandofat em 09/02/2010 - 16:33h

Miranda, veja a seção "Execução remota de comandos usando PuTTY". O PuTTY tem uma ferramenta para gerar esta chave.

[]'s

Fernando

[16] Comentário enviado por maneto em 12/03/2010 - 17:12h

acabei de precisar disso, pois achei um tuto do howtoforge que me dizia para fazer
$ cat ~/.ssh/id_dsa.pub | ssh you@example.com "cat - >> ~/.ssh/authorized_keys"

como tava dando erro ao executar pelo cliente, tive que usar o scp e mexer no servidor mesmo

[17] Comentário enviado por throberth em 06/04/2010 - 18:26h

parabens pelo artigo, ajudou muito mas agora surgiu algumas dificuldades:
-quando preciso acessar mais de uma maquina sem senha, do mesmo servidor de origem?
pois tenho um servidor que atualizada dados em vários servers assim o ssh sem senha me ajudaria pacas, tem alguma idéia como posso realizar isto?

[18] Comentário enviado por throberth em 06/04/2010 - 18:56h

senhores peço perdão pela minha ignorância, a chave é a mesma para todos os demais servidores, é somente copia-la para os tais, agradeço.

[19] Comentário enviado por mcabral em 10/09/2010 - 10:35h

Camarada ..!!!

Meus parabéns pelo artigo ... Funciona que é uma beleza ... estou usando para copiar dados de um servidor para outro.

Obrigado por estar ajudando
Marcelo Cabral

[20] Comentário enviado por Ze_Euros em 11/03/2011 - 10:09h

Gente amiga.
Eu tenho um problema eu não tenho a senha do root porque eu sou administrador aplicacional portanto tenho outros privilegios
no servidor com posso ultrapassar esse dilema ? É possivel eu usar o meu usar outro user para guardar as senhas publicas ?

[21] Comentário enviado por dborges em 02/09/2013 - 21:50h

Fernando e demais,
Não estou conseguindo autenticar sem precisar digitar a senha!
Meu cenário é: um macbook com uma VM do Ubuntu. A VM seria meu servidor. Enquanto que o mac, o cliente.
Criei as chaves no cliente, e copiei para o servidor. Na primeira tentativa, criei como usuario "douglas" no mac (cliente), e copiei para o usuario root da VM (servidor). Não funcionou.
Tentei então, como usuário root no mac, e copiei para o root da VM.
Sem sucesso também.
Essa comunicação mac x ubuntu funciona de forma correta (nesse contexto)? Alguém já tentou?!
Agradeço a ajuda.

Parabéns pelo tópico Fernando. Muito interessante!
Abraço a todos.

[22] Comentário enviado por viniciusmunizm em 14/01/2014 - 17:51h

Olá pessoal,

Escrevi sobre usar ssh sem senha de uma forma mais fácil, utilizando ssh-copy-id, quem desejar pode acessar : http://viniciusmuniz.com/usando-ssh-sem-senha/

[23] Comentário enviado por jeffersonsfelix em 26/03/2014 - 08:39h

Não esquecer que o arquivo authorized_keys (em alguns servidores chama-se authorized_keys2 não sei bem pq) deve estar com permissão 600:
chmod 600 authorized_keys

[24] Comentário enviado por paulinhorm em 20/06/2017 - 22:58h

Otimo artigo Fernando....me ajudou muito...parabens....


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts