O que poderia causar falhas nos comandos de drush remoto com erros ssh quando o ssh funciona em todos os outros casos?

10

Eu tenho chaves ssh públicas e privadas em todos os meus três servidores (dev, UAT e produção) para poder efetuar login remotamente ou de um para outro. Tudo está funcionando perfeitamente para os comandos sshe scp.

Ele não funcionar, no entanto, para Drush. Se eu executar drush @dev statusno UAT, por exemplo, recebo o banner do servidor dizendo que o sistema "deve ser usado apenas por usuários autorizados blá blá blá " e, em seguida, recebo

Permissão negada (chave pública, senha, teclado interativo).

Meu ~/.drush/aliases.drushrc.phparquivo contém:

# Development #
$aliases['dev'] = array(
  'uri' => 'http://default',
  'root' => '/var/www/vhosts/dev.www.company.com/current/',
  'remote-host' => 'companya0.company.com',
  'remote-user' => 'myusername'
);

# UAT #
$aliases['uat'] = array(
  'uri' => 'http://default',
  'root' => '/var/www/vhosts/uat.www.company.com/current/',
  'remote-host' => 'companyc6.company.com',
  'remote-user' => 'myusername'
);

# Production #
$aliases['prod'] = array(
  'uri' => 'http://default',
  'root' => '/var/www/vhosts/www.company.com/current/',
  'remote-host' => 'companyc1.company.com',
  'remote-user' => 'myusername'
);

SOMENTE Drush tem algum problema ao usar minhas teclas ssh. O que poderia estar impedindo que funcionasse?

iconoclasta
fonte
3
Eu acho que depende de qual usuário Drush está sendo executado. Se o Drush estiver sendo executado www-data(por exemplo), suas chaves SSH podem estar erradas / não permitidas / não incluídas na lista de permissões.
Chapabu 5/10/12
4
Execute seus comandos drush com a opção -v ou -s para ver o comando ssh exato que o Drush está gerando para você. Deveria ficar claro a partir de qual é a diferença entre a invocação Drush do ssh e o teste cli do mesmo.
Greg_1_anderson 5/10/12
@ Kaphapu: Sim, eu tenho que usar sudoantes drushe parece que tudo está funcionando como root (uma falha de segurança que eu alertei o administrador do sistema). Parece que este é o problema. Atualmente estou procurando uma solução , enquanto espero para o sysadmin ...
iconoclasta

Respostas:

19

Coloque esta linha no seu arquivo drushrc.php:

$options['ssh-options'] = '-o PasswordAuthentication=no -i /home/YOURUSERNAME/.ssh/id_rsa';

Isso fará com que o Drush repasse essas opções para o ssh sempre que chamar o sistema remoto, para que você possa continuar chamando o Drush via sudo e ainda usar suas credenciais de usuário de login.

greg_1_anderson
fonte
Cara você é incrível ...
iconoclasta
Exemplo para Windows: $ options ['ssh-options'] = '-o PasswordAuthentication = no -i C: \ users \ laptop1 \ .ssh \ id_rsa';
Bryan Jiencke
se entendido corretamente, o diretório "/home/YOURUSERNAME/.ssh/id_rsa" é local onde o comando drush é executado. O diretório "home / YOURUSERNAME" é o $ HOME dir e id_rsa é a chave privada gerada por ssh-keygen
letão
1

Verifique aqui: Como executar o Drush as Apache

Ao que parece, você só precisa mudar o proprietário / grupo do Drush no seu servidor!

Chapabu
fonte
Essa pode ser a solução ideal ... mas terei que fazer com que o administrador do sistema concorde antes que eu possa configurar as coisas dessa maneira.
Iconoclast