у меня проблема с моим действием 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"
Может ли кто-нибудь помочь мне исправить это?
CASignatureAlgorithms +ssh-rsa
Отличным способом интерактивной отладки, который позволяет подключиться к раннеру по SSH, является tmate.
.ssh находится в моем vps внутри /home/adam
нет, я не хочу фиксировать ключ, что мне здесь не хватает?
Вы запускаете команду на GitHub Actions runner, пытаясь подключиться к adam@myip
. У бегуна нет доступа к вашему VPS, как эта команда SSH может быть успешной, если закрытый ключ находится на удаленной машине?
Скопируйте открытый ключ в /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 }}
/home/adam
не существует. Корневой каталог после проверки сохраняется в переменной среды$GITHUB_WORKSPACE
. Где в вашем репо находится каталог.ssh
? И вы, вероятно, не хотите зафиксировать свой закрытый ключ в виде файла, не так ли?