<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          臥槽!竟然可以直接白嫖 Github Action 的 2C7G 服務(wù)器!

          共 2074字,需瀏覽 5分鐘

           ·

          2020-09-02 02:14

          GitHub Actions[1]?是 GitHub 的持續(xù)集成服務(wù)[2],于2018年10月推出[3]。它的功能非常強大,每一個?action?都用來執(zhí)行一種操作,比如抓取代碼、運行測試、登錄遠程服務(wù)器,發(fā)布到第三方服務(wù)等等。將這些?actions?組合起來,就是一個持續(xù)集成的過程。當(dāng)然,這些 actions 都共享在 GitHub 的代碼倉庫中,我們可以直接引用。

          Github Actions 提供了整套服務(wù)器環(huán)境,服務(wù)器規(guī)格為:

          • 2-core CPU
          • 7 GB RAM 內(nèi)存
          • 84 GB SSD 硬盤空間

          詳細系統(tǒng)環(huán)境信息如圖:

          當(dāng)然,可使用的系統(tǒng)除了?Ubuntu?之外還可以使用?Windows Server 2019?和?macOS X Catalina 10.15

          看起來很美好,但實際上 GitHub Ac-tions 本身是不允許直接連接進行交互式操作的,也就是說你無法通過 SSH 來連接服務(wù)器。如果有辦法能夠直接連接到服務(wù)器進行交互式操作,那豈不是相當(dāng)于白嫖了一臺或多臺 E5 2vCPU/7G RAM/90G SSD 配置的 VPS?

          本文就來告訴你如何通過一些奇技淫巧來繞過 GitHub Actions 本身的限制,直接連接到服務(wù)器!

          注意:請勿用于惡意用途,造成的一切后果比如封號、中美關(guān)系惡化、原子彈爆炸、第三次世界大戰(zhàn)等后果均與作者無關(guān)。

          方案一

          mxschmitt/action-tmate[4]

          這是第一個實現(xiàn)?tmate[5]?連接 Ac-tions 服務(wù)器的 ac-tion ,但此方案在退出連接后不能進行到下一個步驟,所以在實際使用中沒有多少價值,只能用于 SSH 連接。不過由于其開天辟地的作用,我決定把它放到第一位。

          work-flow 文件示例:

          name:?CI
          on:?[push]
          jobs:
          ??build:
          ????runs-on:?ubuntu-latest
          ????steps:
          ????-?uses:?actions/checkout@v2
          ????-?name:?Setup?tmate?session
          ??????uses:?mxschmitt/action-tmate@v2

          方案二

          csexton/debugger-action[6]

          此 ac-tion 作者受?mxschmitt/action-tmate[7]?啟發(fā),同樣是通過 tmate 連接,退出連接后可持續(xù)進行下一個步驟,能更好的應(yīng)用到實際項目中使用。作者可能考慮到為 GitHub 節(jié)約資源,默認(rèn)加了 15 分鐘自動斷開連接,不過可以通過執(zhí)行?touch /tmp/keepalive?命令去解除。

          work-flow 文件示例:

          name:?debugger-action
          on:?
          ??watch:
          ????types:?started
          jobs:
          ??build:
          ????runs-on:?ubuntu-latest
          ????steps:
          ?????-?uses:?actions/checkout@v2

          ?????-?name:?Setup?Debug?Session
          ???????uses:?csexton/debugger-action@master

          Action 日志輸出:

          方案三

          該方案沒有使用 action 來實現(xiàn),而是另辟蹊徑,直接使用 ngrok 來穿透內(nèi)網(wǎng),腳本如下:

          #!/bin/bash


          if?[[?-z?"$NGROK_TOKEN"?]];?then
          ??echo?"Please?set?'NGROK_TOKEN'"
          ??exit?2
          fi

          if?[[?-z?"$USER_PASS"?]];?then
          ??echo?"Please?set?'USER_PASS'?for?user:?$USER"
          ??exit?3
          fi

          echo?"###?Install?ngrok?###"

          wget?-q?https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-386.zip
          unzip?ngrok-stable-linux-386.zip
          chmod?+x?./ngrok

          echo?"###?Update?user:?$USER?password?###"
          echo?-e?"$USER_PASS\n$USER_PASS"?|?sudo?passwd?"$USER"

          echo?"###?Start?ngrok?proxy?for?22?port?###"


          rm?-f?.ngrok.log
          ./ngrok?authtoken?"$NGROK_TOKEN"
          ./ngrok?tcp?22?--log?".ngrok.log"?&

          sleep?10
          HAS_ERRORS=$(grep?"command?failed"?
          if?[[?-z?"$HAS_ERRORS"?]];?then
          ??echo?""
          ??echo?"=========================================="
          ??echo?"To?connect:?$(grep?-o?-E?"tcp://(.+)"?"s/tcp:\/\//ssh?$USER@/"?|?sed?"s/:/?-p?/")"
          ??echo?"
          =========================================="
          else
          ??echo?"
          $HAS_ERRORS"
          ??exit?4
          fi

          該腳本用來為?SSH?服務(wù)建立?TCP?隧道,并打印出通過公網(wǎng)連接遠程服務(wù)器的命令。

          首先需要在?ngrok 的官網(wǎng)[8]?注冊一個賬戶,并生成一個Tunnel Authtoken:https://dashboard.ngrok.com/auth。然后創(chuàng)建如下的 workflow:

          name:?Debugging?with?SSH
          on:?push
          jobs:
          ??build:
          ????runs-on:?ubuntu-latest
          ????steps:
          ?????-?uses:?actions/checkout@v1

          ?????-?name:?Try?Build
          ???????run:?./not-exist-file.sh?it?bloke?build

          ?????-?name:?Start?SSH?via?Ngrok
          ???????if:?${{?failure()?}}
          ???????run:?curl?-sL?https://gist.githubusercontent.com/retyui/7115bb6acf151351a143ec8f96a7c561/raw/7099b9db76729dc5761da72aa8525f632d8875c9/debug-github-actions.sh?|?bash
          ???????env:
          ????????#?After?sign?up?on?the?https://ngrok.com/
          ????????#?You?can?find?this?token?here:?https://dashboard.ngrok.com/get-started/setup
          ????????NGROK_TOKEN:?${{?secrets.NGROK_TOKEN?}}

          ????????#?This?password?you?will?use?when?authorizing?via?SSH?
          ????????USER_PASS:?${{?secrets.USER_PASS?}}

          ?????-?name:?Don't?kill?instace
          ???????if:?${{?failure()?}}
          ???????run:?sleep?1h?#?Prevent?to?killing?instance?after?failure

          服務(wù)器存活時間默認(rèn)是 1 小時,可自行調(diào)整。這里面的 TOKEN 和 SSH 登錄密碼最好采用 workflow 中推薦的方式,先在 GitHub 中創(chuàng)建 Secret,然后在 workflow 中引用 Secret。具體步驟可參考官方文檔[9]。

          Action 日志輸出:

          最后再次強調(diào):希望大家以學(xué)習(xí)研究目的來使用,切勿用作其他惡意用途,切勿濫用!

          參考資料

          • SSH 連接到 GitHub Actions 虛擬服務(wù)器環(huán)境?[10]

          參考資料

          [1]

          GitHub Actions:?https://github.com/features/actions

          [2]

          持續(xù)集成服務(wù):?http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html

          [3]

          推出:?https://github.blog/changelog/2018-10-16-github-actions-limited-beta/

          [4]

          mxschmitt/action-tmate:?https://p3terx.com/go/aHR0cHM6Ly9naXRodWIuY29tL214c2NobWl0dC9hY3Rpb24tdG1hdGU=

          [5]

          tmate:?https://github.com/tmate-io/tmate

          [6]

          csexton/debugger-action:?https://p3terx.com/go/aHR0cHM6Ly9naXRodWIuY29tL2NzZXh0b24vZGVidWdnZXItYWN0aW9u

          [7]

          mxschmitt/action-tmate:?https://p3terx.com/go/aHR0cHM6Ly9naXRodWIuY29tL214c2NobWl0dC9hY3Rpb24tdG1hdGU=

          [8]

          ngrok 的官網(wǎng):?https://ngrok.com/

          [9]

          官方文檔:?https://docs.github.com/cn/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets

          [10]

          SSH 連接到 GitHub Actions 虛擬服務(wù)器環(huán)境 :?https://p3terx.com/archives/ssh-to-the-github-actions-virtual-server-environment.html


          往期推薦

          RocketMQ 消息丟失場景及解決辦法

          美國 AI 戰(zhàn)機擊敗人類空軍飛行員

          IntelliJ IDEA 2020.2.1 發(fā)布,Lombok插件可能被官方支持

          美國如果把根域名服務(wù)器封了,中國會從網(wǎng)絡(luò)上消失?

          10分鐘搞定 Java 并發(fā)隊列


          星球限時拼團優(yōu)惠進行中


          我的星球是否適合你?

          點擊閱讀原文看看我們都聊過啥?

          瀏覽 65
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人在线不卡 | 18禁片欧 | 亚洲婷婷五月 | 亚洲天堂免费视频 | 一级a性色生活久久无 |