当ssh在所有其他情况下均可工作时,是什么导致远程drush命令失败并出现ssh错误的?


10

我在所有三台服务器(开发,UAT和生产)上都有公用和专用ssh密钥,因此我可以远程登录,也可以从另一台登录。对于sshscp命令,一切都工作正常。

工作,但是,对于Drush。drush @dev status例如,如果我从UAT 执行,则会收到服务器的标语,上面写着该系统“仅供授权用户使用,等等 ”,然后我得到

权限被拒绝(公钥,密码,键盘交互)。

我的~/.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 2012年

4
使用-v或-s选项运行drush命令,以查看Drush为您生成的确切ssh命令。从中应该清楚地知道,对ssh的Drush调用与对ssh的cli测试之间有什么区别。
greg_1_anderson

@Chapabu:是的,我必须使用sudo之前drush,它似乎一切都在以root运行(一个安全漏洞,我已经提醒有关系统管理员)。看来这是问题所在。我正在等待系统管理员时正在寻找解决方案 ...
iconoclast 2012年

Answers:


19

将此行放在您的drushrc.php文件中:

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

这将导致Drush在调用远程系统时随时将这些选项传递给ssh,因此您可以继续通过sudo调用Drush,并且仍然使用登录用户凭据。


老兄,您真棒……
iconoclast 2012年

Windows的示例:$ options ['ssh-options'] ='-o PasswordAuthentication = no -i C:\ users \ laptop1 \ .ssh \ id_rsa';
布莱恩·杰恩克

如果正确理解,则“ /home/YOURUSERNAME/.ssh/id_rsa”目录是执行drush命令的本地目录。“ home / YOURUSERNAME”目录是$ HOME目录,而id_rsa是通过ssh-keygen生成的私钥iteself
拉脱维亚

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.