iT邦幫忙

0

使用github action 部署階段無法連線伺服器問題

  • 分享至 

  • xImage

想透過github action達成自動部署

ci-cd.yml代碼如下

name: CI/CD Pipeline

on:
  push:
    branches:
      - master  # 當推送到 master 分支時觸發

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Check out code
        uses: actions/checkout@v3  # 更新至 v3

      - name: Set up Node.js
        uses: actions/setup-node@v3  # 更新至 v3
        with:
          node-version: '20'  # 使用 Node.js 版本 20

      - name: Install dependencies
        run: npm install

      #- name: Build the project
      #  run: npm run build  # 如果有需要的話

      - name: Build Docker image
        run: docker build . -t ${{ secrets.DOCKER_USERNAME }}/cd-example:latest

      - name: Log in to Docker Hub
        env:
          DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
          DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
        run: echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin

      - name: Push Docker image
        run: docker push ${{ secrets.DOCKER_USERNAME }}/cd-example:latest

      - name: Deploy to Server
        uses: appleboy/ssh-action@v0.1.3
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}  # 將您的私鑰添加到 GitHub Secrets
          # passphrase: ${{ secrets.SSH_PASSPHRASE }}  # 如果您的私鑰有密碼,否則可以刪除
          port: 22 # 如果使用非標準端口,請更改為正確的端口
          script: |
            docker pull ${{ secrets.DOCKER_USERNAME }}/cd-example:latest
            docker stop ${{ secrets.DOCKER_USERNAME }}/cd-example || true
            docker rm ${{ secrets.DOCKER_USERNAME }}/cd-example || true
            docker run -d --name ${{ secrets.DOCKER_USERNAME }}/cd-example ${{ secrets.DOCKER_USERNAME }}/cd-example:latest

看github build的紀錄卡在 deploy to server 這個階段
出現
2024/09/26 08:19:36 ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain
的錯誤提示

因為對ssh連線至虛擬機不太熟,也確認secrets有順利添加,想詢問是否有任何建議?

目前已可以透過 終端機
輸入指令

ssh -i "C:\Users\xxx\Documents\xxx.pem" ubuntu@xx.xx.xx.xx

順利連線,防火牆也關掉了,這個pem是透過AWS 自動建立的 default SSH key,連線後並沒有建立任何使用者

順便想詢問業界,通常都是建立虛擬機後,開很多個使用者嗎?然後再使用額外開得使用者連線嗎?

經查詢發現在使用appleboy/ssh-action@v0.1.3 的版本時 改為選擇 appleboy/ssh-action@master 即可以解決此問題
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答