Действие Github -> проблема с подключением SSH

у меня проблема с моим действием github, и я не могу подключиться к ssh, я сделал это:

  • Создайте ключ ssh с пользователем adam

  • Скопируйте открытый ключ в /root/.ssh/authorized_keys

  • Создайте секрет в github с открытым ключом

  • Создайте script.sh в /home/adam/

  • каталог chmod 600 .ssh

Но я получил эту ошибку:

Запустите ssh -o StrictHostKeyChecking=no
Предупреждение: файл идентификации /home/adam/.ssh/id_rsa недоступен: нет такого файла или каталога. Предупреждение: навсегда добавлен «мой IP» (ED25519) в список известных хостов. adam@my Ip: Отказано в доступе (открытый ключ, пароль, интерактивная клавиатура). Ошибка: процесс завершен с кодом выхода 255.

Это мой код:

        name: Run script on VPS
on:
  push:
    branches: [master]
jobs:
  run-script:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Run script
        env:
          SSH_PRIVATE_KEY: ${{ secrets.VPS_SSH_PUBLIC_KEY }}
        run: |
          ssh -o StrictHostKeyChecking=no \
              -o PasswordAuthentication=no \
              -i /home/adam/.ssh/id_rsa \
              adam@myip \
              "bash /home/adam/script.sh"

Может ли кто-нибудь помочь мне исправить это?

  • пытался проверить правильность пути к id_rsa и id_rsa.pub
  • видел, что оба файла были там и с хорошим ключом внутри
  • пытался воссоздать ключ ssh несколько раз
  • пробовал другой способ доступа к ssh
  • проверьте conf, откройте ssh, примите rsa и добавьте эту строку CASignatureAlgorithms +ssh-rsa
  • перезапустить службу ssh
/home/adam не существует. Корневой каталог после проверки сохраняется в переменной среды $GITHUB_WORKSPACE. Где в вашем репо находится каталог .ssh? И вы, вероятно, не хотите зафиксировать свой закрытый ключ в виде файла, не так ли?
Benjamin W. 05.04.2023 18:45

Отличным способом интерактивной отладки, который позволяет подключиться к раннеру по SSH, является tmate.

Benjamin W. 05.04.2023 18:46

.ssh находится в моем vps внутри /home/adam

Adam Garchi 05.04.2023 18:51

нет, я не хочу фиксировать ключ, что мне здесь не хватает?

Adam Garchi 05.04.2023 18:52

Вы запускаете команду на GitHub Actions runner, пытаясь подключиться к adam@myip. У бегуна нет доступа к вашему VPS, как эта команда SSH может быть успешной, если закрытый ключ находится на удаленной машине?

Benjamin W. 05.04.2023 18:57
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
5
343
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Скопируйте открытый ключ в /root/.ssh/authorized_keys

То есть на удаленном целевом сервере, к которому вы хотите подключиться по SSH.

И это означает, что вы хотите использовать SSH как root: root@remoteServer:....
Не так adam@...


Вместо того, чтобы полагаться на локальный путь, который не существует в GitHub runner (если только он не размещен самостоятельно), вы можете использовать действие GitHub «appleboy/ssh-action»

  - name: ssh key passphrase
    uses: appleboy/[email protected]
    with:
      host: ${{ secrets.HOST }}
      username: ${{ secrets.USERNAME }}
      key: ${{ secrets.KEY }}
      port: ${{ secrets.PORT }}
      passphrase: ${{ secrets.PASSPHRASE }}
      script: |
        whoami
        ls -al

Удалите строку passphrase: ${{ secrets.PASSPHRASE }}, если ваш закрытый ключ SSH не защищен паролем.

Таким образом, вам не нужно создавать папку .ssh/ с правильным разрешением. Это действие позаботится обо всем этом за вас.

Ответ принят как подходящий

спасибо за ваши ответы, я точно не знаю, в чем была проблема, но я думаю, что это было связано с ключом ssh

Я исправил свой код, используя пароль, который хранится в секрете github, вместо ключа ssh.

  name: Deploy 🚀
    on:
      push:
        branches:
          - master
    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout code
            uses: actions/checkout@v2
          - name: Install Node.js
            uses: actions/setup-node@v2
            with:
              node-version: '16.x'
          - name: Install dependencies
            run: npm install
          - name: Build project
            run: npm run build
          - name: SSH Deploy
            run: |
              sshpass -p ${{ secrets.PSWD }} ssh -o StrictHostKeyChecking=no -p 22 ${{ secrets.USER}}@${{ secrets.VPS_IP }} 'cd /home/adam && ./deploy.sh'
            env:
              SSHPASS: ${{ secrets.PSWD }}

Другие вопросы по теме