使用 SSH 连接 GitHub Action 服务器

在 ngrok 的官网注册一个账户

https://www.ngrok.com/

查看 Authtoken

https://dashboard.ngrok.com/auth/your-authtoken

如下图所示,复制下来,等会要用.

在 GitHub 创建一个 Repo

打开你的github,新创建一个仓库.只需要填上仓库名字,别的不用管,点击下面的Creat repository

给 Repo 添加 Secrects

NGROK_TOKEN : 1gtVf----------------------yVqbyAXX9
SSH_PASSWORD :ThisIsMySshServerPassword

点击Secrets,然后点击右侧New Secret

然后添加的secret就是前面代码里的,照着图例填写后,点击Add secret就行.

然后添加另外一个secret 他的Name就是SSH_PASSWORD,密码你自己设定,这恶鬼密码就是你用ssh连接服务器时候所要用到的密码.

添加文件 ssh-server.sh 到 Repo

然后我们来添加sh脚本,先点击code,然后点击creating a new file

文件名字就写ssh-server.sh,内容就是下面代码框的这些,全部复制然后粘贴过去就行

最后页面拉到最下面,点击Commit new file.

#!/bin/bash

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

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

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

echo -e "$SSH_PASSWORD\n$SSH_PASSWORD" | sudo passwd "$USER"

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

sleep 10

HAS_ERRORS=$(grep "command failed" < .ngrok.log)

if [[ -z "$HAS_ERRORS" ]]; then
  echo ""
  echo "To connect: $(grep -o -E "tcp://(.+)" < .ngrok.log | sed "s/tcp:\/\//ssh $USER@/" | sed "s/:/ -p /")"
  echo ""
else
  echo "$HAS_ERRORS"
  exit 4
fi

创建 workflow:ssh-server.yml

点击Actions 然后按照图片所示点击 set up a workflow yourself

然后如下图所示填写名字和内容,内容在下面给出了.完成后点击右上角的start commit就行.

name: SSH Server
on: push
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
     - uses: actions/checkout@v2

     - name: Failed
       run: ./dummy.sh

     - name: Start SSH Server
       if: ${{ failure() }}
       env:
         NGROK_TOKEN: ${{ secrets.NGROK_TOKEN }}
         SSH_PASSWORD: ${{ secrets.SSH_PASSWORD }}
       run: |
          chmod +x ./ssh-server.sh &&  ./ssh-server.sh

     - name: Sleep
       if: ${{ failure() }}
       run: sleep 1h

启动github action然后连接服务器

点击action,查看详情,箭头所示就是用ssh连接的方式,密码就是之前在secret里你自己设置的密码.

© 版权声明
THE END
喜欢就支持以下吧
点赞0赞赏
分享
评论 共1条

请登录后发表评论

    • user84871333的头像-行而思雨
    • 报错了 ./dummy.sh shell: /bin/bash -e {0} /home/runner/work/_temp/980058d2-ad4d-4968-8710-7da0d5e0e9e9.sh: line 1: ./dummy.sh: No such file or directory Error: Process completed with exit code 127.
      7月前