Wordpress não consegue encontrar par de chaves públicas e privadas ssh

4

A configuração do meu servidor é a seguinte: CentOS 5.8 (final) executando o Nginx.

Estou usando o recurso SSH2 do instalador de plugins do Wordpress.

Eu instalei o lib2ssh e ele está funcionando (o Wordpress está reconhecendo que ele existe).

O usuário (chamado playwithbits ) que eu forneci ao wordpress é chrooted e tem o diretório home de /home/nginx/domains/playwithbits/

As chaves pública e privada estão localizadas no diretório /home/nginx/domains/playwithbits/keys/ e são nomeadas id_rsa.pub e id_rsa , respectivamente.

Eu copiei o conteúdo de id_rsa.pub para o arquivo authorized_keys localizado em /home/nginx/domains/playwithbits/.ssh/

Eu não defini uma senha para os arquivos de chave. No entanto Wordpress continua retornando o erro:

Public and Private keys incorrect for playwithbits

Eu forneci as seguintes informações para o Wordpress

Hostname: localhost
Username: playwithbits
Password: Blank
Public key: /keys/id_rsa.pub //I have also tried the paths from server root
Private key: /keys/id_rsa

Aqui estão as permissões que defini nas pastas e arquivos relevantes:

drwx------ 2 playwithbits playwithbits 4096 Jun  8 11:25 .ssh
drwx------ 2 playwithbits playwithbits 4096 Jun  8 13:27 keys
-rw------- 1 playwithbits playwithbits  414 Jun  8 11:21 authorized_keys
-rw------- 1 playwithbits playwithbits 1.7K Jun  6 02:17 id_rsa
-rw-r--r-- 1 playwithbits playwithbits  414 Jun  6 02:17 id_rsa.pub

Eu também tentei conectar no modo de depuração no qual recebo a seguinte saída:

Connection from 127.0.0.1 port 56674
debug1: Client protocol version 2.0; client software version libssh2_0.18 PHP
debug1: no match: libssh2_0.18 PHP
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.8
debug1: permanently_set_uid: 74/74
debug1: list_hostkey_types: ssh-rsa,ssh-dss
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: client->server aes256-cbc hmac-sha1 none
debug1: kex: server->client aes256-cbc hmac-sha1 none
debug1: expecting SSH2_MSG_KEXDH_INIT
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: KEX done
Received disconnect from 127.0.0.1: 11: PECL/ssh2 (http://pecl.php.net/packages/ssh2)
debug1: do_cleanup
debug1: do_cleanup

Alguém sabe por que não consigo usar a chave pública e privada para acessar? Se eu usar a senha da conta, o wordpress poderá fazer login e executar atualizações.

Editar: No meu arquivo sshd_config , tenho as seguintes regras:

Match group web-root-locked
         ChrootDirectory /home/nginx/domains/%u
         X11Forwarding no
         AllowTcpForwarding no
         ForceCommand internal-sftp
         AuthorizedKeysFile /home/nginx/domains/%u/.ssh/authorized_keys

playwithbits é um membro de web-root-locked

    
por George Reith 08.06.2012 / 14:48

4 respostas

4

Encontrei a resposta para isso com alguma tentativa e erro. As chaves necessárias para pertencer ao servidor da Web, em vez do usuário com o qual estou tentando efetuar login.

chown nginx:nginx id_rsa
chown nginx:nginx id_rsa.pub

Agora funciona como um sonho.

    
por 13.06.2012 / 22:12
3

Meu primeiro instinto: id_rsa deve estar em ~ / .ssh /

O Apache pode estar gerando todos os tipos de processos via fork, children, children daqueles, etc. Para isso, eu descobriria qual caminho o Wordpress está tentando abrir usando ferramentas de log de auditoria.

'auditctl -a entry,always -F arch='arch' -F euid!=0 -S open'
'auditctl -a entry,always -F arch='arch' -F euid!=0 -S stat'

Aqueles devem pegar a tentativa. Você pode encontrá-lo fazendo grep id_rsa no seu log de auditoria para ver a tentativa em aberto. Se isso não fornecer informações, aprofundar-se no monitoramento chdir e afins seria o caminho a percorrer, mas estou bastante confiante de que open syscall detectará isso.

Depois de saber o que está tentando fazer, você pode descobrir se o caminho é relativo ao diretório inicial do usuário, à origem de outro usuário, à raiz http, à raiz do FS, etc.

Atualizar

Este tutorial sobre como usar o ssh para atualizações do Wordpress mostra o uso do caminho completo para especificar a chave .

    
por 08.06.2012 / 16:06
0

Experimente este plugin . Ele permite que você faça o upload de chaves privadas SSH do seu computador através do navegador. Chaves públicas não são necessárias.

    
por 09.06.2012 / 01:26
0

Para quem usa o apache, aqui está como resolvi o problema das permissões no Ubuntu 14.04

Primeiro adicione o grupo do usuário para o apache:

usermod -a -G myuser www-data

Em seguida, tudo o que foi necessário foi conceder permissões de leitura à chave privada:

chmod g+r /home/myuser/.ssh/id_rsa
    
por 29.10.2015 / 18:26