Como fazer conexão ssh entre servidores usando autenticação de chave pública

1

Estou configurando um servidor de integração contínua (CI) e um servidor web de teste. Eu gostaria que o servidor de CI acessasse o servidor da Web com autenticação de chave pública. No servidor web eu criei um usuário e gerou as chaves

sudo useradd -d /var/www/user -m user
sudo passwd user
sudo su user
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/var/www/user/.ssh/id_rsa):
Created directory '/var/www/user/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /var/www/user/.ssh/id_rsa.
Your public key has been saved in /var/www/user/.ssh/id_rsa.pub.

No entanto, do outro lado, o servidor de CI copia a chave para o host, mas ainda solicita a senha

ssh-copy-id -i ~/.ssh/id_rsa.pub user@webserver-address
user@webserver-address's password:
Now try logging into the machine, with "ssh 'user@webserver-address'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Eu verifiquei no servidor web e a chave pública do servidor CI foi copiada para o servidor web authorized_keys, mas quando me conecto, ele pergunta a senha.

  ssh 'user@webserver-address'
  user@webserver-address's password:

Se eu tentar usar usuário root em vez de meu usuário criado (ambos os usuários estão com chaves públicas copiadas). Ele se conecta com a chave pública

  ssh 'root@webserver-address'
  Welcome to Ubuntu 11.04 (GNU/Linux 2.6.18-274.7.1.el5.028stab095.1 x86_64)

   * Documentation:  https://help.ubuntu.com/
  Last login: Wed Apr 11 10:21:13 2012 from *******
  root@webserver-address:~#
    
por Rafael 11.04.2012 / 09:01

1 resposta

2

Sua pergunta diz que você deseja fazer login no servidor da Web a partir do servidor de IC. Mas você diz que criou as chaves no servidor da web. Não tenho certeza se isso é apenas um mal-entendido ou um erro de digitação.

Aqui está uma breve visão geral do que você precisa fazer para habilitar o login no servidor web a partir do servidor de CI com as chaves:

  1. Crie o par de chaves pública / privada no servidor de IC
  2. Copie a parte pública da chave ( id_rsa.pub ) para o servidor da web no arquivo ~/.ssh/authroized_keys de cada usuário que você deseja efetuar login como ( root , user etc.). Eu costumo usar apenas scp para copiar o arquivo para o servidor. Se você tiver várias chaves que serão usadas para cada usuário, anexe-as a authorized_keys . Caso contrário, se essa for a única chave para esse usuário, basta renomear id_rsa.pub para authorized_keys .
  3. Verifique se as permissões na pasta .ssh são 644 com chmod 644 .ssh e o arquivo de chaves autorizado tem permissões de 700 com chmod 700 .ssh/authorized_keys .
  4. Tente fazer login no servidor da web a partir do servidor de IC com um nome de usuário para o qual você copiou a chave pública no servidor da Web. %código%

Ele não deve pedir uma senha (isto supondo que você tenha seguido o conselho do @khaled em relação ao arquivo de configuração do sshd, mas os padrões normalmente são configurados para permitir a autenticação da chave antes da senha).

    
por 11.04.2012 / 11:53