Skip to content

"Host key verification failed." when using rsync #17

Description

@ograr

This seems to be a slightly different issue than #16 or #2 so I'm making a new one, hope that's ok. My current setup (with SSH_KNOWN_HOSTS) seems to work fine just up until Deployer tries to rsync to the server.

Perhaps the problem is that SSH_PRIVATE_KEY isn't exposed to the rsync over SSH tunnel? Or am I doing something wrong?

Below is my setup, inspired by https://atymic.dev/blog/github-actions-laravel-ci-cd/.

deploy.php:

<?php
namespace Deployer;

require 'recipe/common.php';
require 'recipe/rsync.php';

// Project name
set('application', 'SECRET');

set('allow_anonymous_stats', false);

// Hosts
$hosts = ['dev' => 'staging', 'prod' => 'production'];
foreach ($hosts as $host => $stage) {
  host($host)
    ->hostname(getenv('SSH_HOST'))
    ->port(getenv('SSH_PORT'))
    ->stage($stage)
    ->user(getenv('SSH_USER'))
    ->set('deploy_path', getenv('DEPLOY_PATH'));
}

// Tasks
task('deploy', [
    'deploy:info',
    'deploy:prepare',
    'deploy:release',
    'rsync',
    'deploy:symlink',
    'cleanup',
    'success'
]);

deploy.dev.yml:

name: Deploy to dev

on:
  push:
    branches: develop

jobs:
  deploy:
    name: Deploy to dev
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/develop'
    steps:
      - uses: actions/checkout@v2
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 7.4
      - name: Install Deployer
        uses: atymic/deployer-php-action@master
        with:
          ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
          ssh-known-hosts: ${{ secrets.SSH_KNOWN_HOSTS }}
      - name: Get Deployer version
        run: dep -V
      - name: Deploy to dev
        run: dep deploy dev -vvv
        env:
          SSH_HOST: ${{ secrets.DEV_SSH_HOST }}
          SSH_PORT: ${{ secrets.DEV_SSH_PORT }}
          SSH_USER: ${{ secrets.DEV_SSH_USER }}
          DEPLOY_PATH: ${{ secrets.DEV_DEPLOY_PATH }}

Log excerpt from Github Actions:

Run dep -V
Deployer v6.8.0

Run dep deploy dev -vvv
[localhost] > git rev-parse --abbrev-ref HEAD
[localhost] < develop
✈︎ Deploying develop on dev
• done on [dev]
➤ Executing task deploy:prepare
[dev] > echo $0
[dev] < ssh multiplexing initialization
[dev] < bash
[dev] > if [ ! -d *** ]; then mkdir -p ***; fi
[dev] > if [ ! -L ***/current ] && [ -d ***/current ]; then echo 'true'; fi
[dev] > cd *** && if [ ! -d .dep ]; then mkdir .dep; fi
[dev] > cd *** && if [ ! -d releases ]; then mkdir releases; fi
[dev] > cd *** && if [ ! -d shared ]; then mkdir shared; fi
• done on [dev]
✔ Ok [6s 482ms]
➤ Executing task deploy:release
[dev] > cd *** && (if [ -h release ]; then echo 'true'; fi)
[dev] < true
[dev] > cd *** && (rm -rf "$(readlink release)")
[dev] > cd *** && (rm release)
[dev] > cd *** && (if [ -d releases ] && [ "$(ls -A releases)" ]; then echo 'true'; fi)
[dev] > cd *** && (if [ -d ***/releases/1 ]; then echo 'true'; fi)
[dev] > cd *** && (date +"%Y%m%d%H%M%S")
[dev] < 20210325205814
[dev] > cd *** && (echo '20210325205814,1' >> .dep/releases)
[dev] > cd *** && (mkdir ***/releases/1)
[dev] > cd *** && (if [[ $(man ln 2>&1 || ln -h 2>&1 || ln --help 2>&1) =~ '--relative' ]]; then echo 'true'; fi)
[dev] < true
[dev] > cd *** && (ln -nfs --relative ***/releases/1 ***/release)
• done on [dev]
✔ Ok [3s 556ms]
➤ Executing task rsync
[dev] > if [ -h ***/release ]; then echo 'true'; fi
[dev] < true
[dev] > readlink ***/release
[dev] < releases/1
[localhost] > rsync -rz -e 'ssh -p*** -A -p ***' --delete --exclude='.git' --exclude='deploy.php' '/home/runner/.composer/vendor/deployer/recipes/recipe/' '***@***:***/releases/1/'
[localhost] < Host key verification failed.
[localhost] < rsync: connection unexpectedly closed (0 bytes received so far) [sender]
[localhost] < rsync error: unexplained error (code 255) at io.c(235) [sender=3.1.3]
➤ Executing task deploy:failed
• done on [dev]
✔ Ok [0ms]

In Process.php line 267:
                                                                               
  [Symfony\Component\Process\Exception\ProcessFailedException]                 
  The command "rsync -rz -e 'ssh -p*** -A -p ***' --delete --exclude='.git'  
   --exclude='deploy.php' '/home/runner/.composer/vendor/deployer/recipes/rec  
  ipe/' '***@***:***/releases/1/'" fa  
  iled.                                                                        
                                                                               
  Exit Code: 255(Unknown error)                                                
                                                                               
  Working directory: /home/runner/work/hittaratt/hittaratt                     
                                                                               
  Output:                                                                      
  ================                                                             
                                                                               
                                                                               
  Error Output:                                                                
  ================                                                             
  Host key verification failed.                                                
  rsync: connection unexpectedly closed (0 bytes received so far) [sender]     
  rsync error: unexplained error (code 255) at io.c(235) [sender=3.1.3]        
                                                                               

Exception trace:
  at /home/runner/.composer/vendor/symfony/process/Process.php:267
 Symfony\Component\Process\Process->mustRun() at /home/runner/.composer/vendor/deployer/deployer/src/Utility/ProcessRunner.php:56
 Deployer\Utility\ProcessRunner->run() at /home/runner/.composer/vendor/deployer/deployer/src/functions.php:329
 Deployer\runLocally() at /home/runner/.composer/vendor/deployer/recipes/recipe/rsync.php:144
 Deployer\Deployer::Deployer\{closure}() at n/a:n/a
 call_user_func() at /home/runner/.composer/vendor/deployer/deployer/src/Task/Task.php:105
 Deployer\Task\Task->run() at /home/runner/.composer/vendor/deployer/deployer/src/Executor/SeriesExecutor.php:60
 Deployer\Executor\SeriesExecutor->run() at /home/runner/.composer/vendor/deployer/deployer/src/Console/TaskCommand.php:144
 Deployer\Console\TaskCommand->execute() at /home/runner/.composer/vendor/symfony/console/Command/Command.php:256
 Symfony\Component\Console\Command\Command->run() at /home/runner/.composer/vendor/symfony/console/Application.php:971
 Symfony\Component\Console\Application->doRunCommand() at /home/runner/.composer/vendor/deployer/deployer/src/Console/Application.php:133
 Deployer\Console\Application->doRunCommand() at /home/runner/.composer/vendor/symfony/console/Application.php:290
 Symfony\Component\Console\Application->doRun() at /home/runner/.composer/vendor/symfony/console/Application.php:166
 Symfony\Component\Console\Application->run() at /home/runner/.composer/vendor/deployer/deployer/src/Deployer.php:326
 Deployer\Deployer::run() at /home/runner/.composer/vendor/deployer/deployer/bin/dep:137

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions