能否使用Ddev Drush站点别名操作远程服务器?配置异常咨询
Ddev中Drush站点别名执行异常的排查与解决
问题现象
使用ddev drush @dev-server status能正常显示远程服务器详情,但执行ddev drush @dev-server sqlc、删除远程节点等命令时,实际操作的却是本地Ddev站点——比如删除远程存在但本地没有的节点时,Drush会提示节点不存在。
可能的阻碍设置及解决方法
1. Ddev对Drush环境变量的自动注入
Ddev会自动设置DRUPAL_ROOT、数据库连接等环境变量,可能导致部分Drush命令优先调用本地站点资源。
- 检查项目内或全局Drush别名配置(
drush/sites/或~/.drush/sites/下的.site.yml文件),确保远程别名的root、uri、ssh参数准确指向远程服务器,示例配置:dev-server: root: /var/www/html uri: https://dev.example.com ssh: deploy@dev-server.example.com ssh-options: '-i /home/.ssh/id_rsa_dev' - 确保别名配置中未混入本地Ddev站点的路径参数。
2. SSH密钥的容器内访问权限
status命令仅需基础SSH连通性,但其他命令需要完整的认证上下文,需保证Ddev容器能正确访问SSH密钥:
- 宿主机器的SSH密钥需放在
~/.ssh目录下,Ddev默认会将宿主的~/.ssh挂载到容器内的/home/.ssh,因此别名配置中的密钥路径要使用容器内路径(如/home/.ssh/id_rsa_dev)。 - 确保宿主和容器内的密钥文件权限为
600,避免权限过高导致SSH拒绝使用:# 宿主机器设置权限 chmod 600 ~/.ssh/id_rsa_dev # 进入容器后检查并修正权限 ddev ssh chmod 600 /home/.ssh/id_rsa_dev - 测试容器内SSH连通性:
ddev ssh后执行ssh -i /home/.ssh/id_rsa_dev deploy@dev-server.example.com,确认能无密码登录远程服务器。
3. Ddev命令的执行上下文干扰
直接使用ddev drush可能被Ddev注入本地站点参数,改用ddev exec执行Drush命令,可规避这类干扰:
ddev exec drush @dev-server sqlc ddev exec drush @dev-server node:delete 123
4. Ddev全局Drush配置的影响
检查~/.ddev/config.yaml中的Drush相关配置(如drush_version、自定义命令参数),暂时注释掉可疑配置后重新测试命令执行情况。
内容的提问来源于stack exchange,提问作者therobyouknow
相关产品推荐
相关产品推荐

