Github Actions - 使用 SSH 远程连接服务器部署
发表于 2019-11-18
作者: 灼灼团队
本文字数: 973
阅读时长 ≈ 3.2 分钟

文档中并没有关于 SSH 方面的东西,虽然不属于 Github Actions 范畴,但经常用到,并且确实要花费一些时间去检索用法,甚至调试很久。

此文是为了记录经过验证的示例代码,方便日后或他人参考和使用。

# 需求

当 push 代码到仓库时,触发部署流程,在 actions 中通过 ssh 操作远程服务器实现。

# 代码

name: deploy

on: [push]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - name: init ssh, deploy
      run: |
        eval $(ssh-agent -s)
        echo "${{secrets.SERVER_SSH_PRIV_KEY}}" > deploy.key
        mkdir -p ~/.ssh
        chmod 0600 deploy.key
        ssh-add deploy.key
        echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
        ssh root@${{secrets.SERVER_IP}} "cd /your/workspace/path && sh update.sh "
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 小结

主要是两个部分:

secrets.SERVER_SSH_PRIV_KEY 是用来访问远程服务器的私钥,具体:

  1. 生成密钥对(见文末参考链接)
  2. 在远程服务器上添加公钥 (将公钥添加到服务器的 ~/.ssh/authorized_keys 文件中)
  3. 在 Github 仓库设置私钥 (Settings > Secrets)

secrets.SERVER_IP 是远程服务器地址;

# 参考链接

  • Generating new SSH key: https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
  • Github Actions Doc: https://help.github.com/en/actions/automating-your-workflow-with-github-actions
  • https://laogen.site/gitlab-ci/example-docker-ssh-deploy/
联系我们
联系电话:17681177133
联系邮箱:admin@zhuo-zhuo.com
公司地址:合肥市高新区习友路2666号 (习友路和石莲南路交叉口西北角)二期304室
官网
博客
皖ICP备20009670号-2
合肥灼灼信息技术有限公司 | Copyright © 2020-present zhuo-zhuo.com