diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml index 2b08dc6..e81f1fb 100644 --- a/.forgejo/workflows/deploy.yml +++ b/.forgejo/workflows/deploy.yml @@ -125,15 +125,38 @@ jobs: run: | apt-get update && apt-get install -y openssh-client mkdir -p ~/.ssh - cat << 'KEYEOF' > ~/.ssh/deploy_key - ${{ secrets.SSH_PRIVATE_KEY }} - KEYEOF + chmod 700 ~/.ssh + + # Записываем ключ, удаляя Windows-переносы \r и лишние пробелы + printf '%s' "${{ secrets.SSH_PRIVATE_KEY }}" | tr -d '\r' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' > ~/.ssh/deploy_key + # Добавляем финальный перенос строки + echo "" >> ~/.ssh/deploy_key + chmod 600 ~/.ssh/deploy_key - echo "=== Проверяем ключ ===" + echo "=== Размер файла ===" + wc -c ~/.ssh/deploy_key + + echo "=== Первая строка ===" + head -n 1 ~/.ssh/deploy_key + + echo "=== Последняя строка ===" + tail -n 1 ~/.ssh/deploy_key + + echo "=== Fingerprint ===" ssh-keygen -lf ~/.ssh/deploy_key + + echo "=== Количество строк ===" + wc -l ~/.ssh/deploy_key + + echo "=== Hex первых 20 байт (проверяем нет ли BOM или пробелов) ===" + head -c 20 ~/.ssh/deploy_key | xxd + echo "=== Добавляем хост ===" - ssh-keyscan -p ${{ env.DEPLOY_PORT }} -H ${{ env.DEPLOY_HOST }} >> ~/.ssh/known_hosts 2>/dev/null + ssh-keyscan -p ${{ env.DEPLOY_PORT }} -H ${{ env.DEPLOY_HOST }} >> ~/.ssh/known_hosts 2>/dev/null || true + + echo "=== Пробуем подключиться ===" + ssh -vvv -p ${{ env.DEPLOY_PORT }} -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no -o BatchMode=yes -o IdentitiesOnly=yes -o PasswordAuthentication=no ${{ env.DEPLOY_USER }}@${{ env.DEPLOY_HOST }} "echo OK" || true - name: Add host to known_hosts run: |