ssh가 다른 모든 경우에 작동 할 때 ssh 오류로 인해 원격 drush 명령이 실패하는 원인은 무엇입니까?


10

세 서버 (dev, UAT 및 프로덕션) 모두에 공개 및 개인 ssh 키가 있으므로 원격으로 또는 서로 로그인 할 수 있습니다. sshscp명령에 대해 모든 것이 완벽하게 작동 합니다.

그러나 Drush 에서는 작동 하지 않습니다 . 내가 실행하면 drush @dev status시스템을 말하는 서버의 배너 "권한이 부여 된 사용자가 사용하는 전용 UAT, 예를 들어, 내가받을 어쩌구 저쩌구 "다음 I GET

권한이 거부되었습니다 (공개 키, 암호, 키보드 대화 형).

~/.drush/aliases.drushrc.php파일에는 다음이 포함됩니다.

# 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'
);

Drush 내 ssh 키를 사용하는 데 문제가 있습니다. 무엇이 작동하지 못하게 할 수 있습니까?


3
Drush를 실행하는 사용자에 따라 다릅니다. www-data예를 들어 Drush를 실행하는 경우 SSH 키가 잘못 / 허용되지 않거나 허용되지 않을 수 있습니다.
Chapabu

4
-v 또는 -s 옵션과 함께 drush 명령을 실행하여 Drush가 생성 한 정확한 ssh 명령을 확인하십시오. ssh의 Drush 호출과 cli 테스트의 차이점은 무엇인지 분명해야합니다.
greg_1_anderson

@Chapabu : 예, sudo전에 사용해야 drush하고 모든 것이 루트로 실행되는 것처럼 보입니다 (sysadmin에게 경고 한 보안 구멍). 이것이 문제인 것 같습니다. 나는 현재하고있어 솔루션을 찾고 나는 시스템 관리자를 기다리는 동안 ...
우상 파괴자

답변:


19

이 줄을 drushrc.php 파일에 넣으십시오.

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

이렇게하면 원격 시스템을 호출 할 때마다 Drush가이 옵션을 ssh에 전달하여 sudo를 통해 Drush를 계속 호출하고 로그인 사용자 자격 증명을 계속 사용할 수 있습니다.


넌 정말 대단해 ...
iconoclast

Windows의 예 : $ options [ 'ssh-options'] = '-o PasswordAuthentication = no -i C : \ users \ laptop1 \ .ssh \ id_rsa';
Bryan Jiencke

올바르게 이해되면 "/home/YOURUSERNAME/.ssh/id_rsa"디렉토리는 drush 명령이 실행되는 로컬 디렉토리입니다. "홈 / username이"dir은 $ 홈 디렉토리이며, id_rsa_gsg_keypair를가 iteself ssh를-Keygen은을 통해 생성 된 개인 키입니다
라트비아어

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.