GitHub 工作流可以创建ssh连接吗?

是的,GitHub Actions 可以创建 SSH 连接。但是,你需要注意安全问题,确保你的私钥不会泄露,通常可以使用 GitHub 的 secrets 功能来存储敏感信息。

以下是在 GitHub Actions 工作流中创建 SSH 连接的一个基本步骤示例:

- name: Run command via SSH
  run: |
    mkdir -p ~/.ssh/
    echo "${
    
    { secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
    chmod 600 ~/.ssh/id_rsa
    ssh -o StrictHostKeyChecking=no [email protected] "your command"

这个示例中的 "${ { secrets.SSH_PRIVATE_KEY }}" 就是使用了 GitHub 的 secrets 功能。你需要在仓库的设置中,把你的私钥添加到 secrets 中,并将其命名为 SSH_PRIVATE_KEY。在工作流中,可以通过 "${ { secrets.SSH_PRIVATE_KEY }}" 的方式来引用这个私钥,这样它就不会在日志或其他地方泄露。

注意在使用 ssh 命令时,我们添加了 -o StrictHostKeyChecking=no 参数,这是因为在 GitHub Actions 的环境中,你没有机会手动确认主机的公钥,所以需要禁用这个检查。但这也意味着可能受到“中间人攻击”,因此在使用这个参数时一定要确保你知道自己在做什么。

同样,你也需要确保你的服务器的公网 IP 或者域名是正确的,以及你要执行的命令是正确和安全的。

ssh连接后,GitHub 工作流如何对远程主机进行git pull

在 GitHub Actions 工作流中对远程主机进行 git pull 的操作,可以在你创建 SSH 连接后,作为一个命令执行。下面的示例假设你已经配置好 SSH 连接:

- name: Run command via SSH
  run: |
    mkdir -p ~/.ssh/
    echo "${
    
    { secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
    chmod 600 ~/.ssh/id_rsa
    ssh -o StrictHostKeyChecking=no [email protected] "
      cd /path/to/your/repo
      git pull
    "

注意在执行 git pull 命令之前,你需要先使用 cd 命令切换到你的仓库所在的目录。并且你需要确保在远程主机上,你已经配置好了 git,比如设置了正确的用户信息和远程仓库地址等。

需要注意的是,使用这种方式进行自动部署有一定的安全风险,包括可能的“中间人攻击”和服务器私钥的泄露风险。在实际使用中,你可能需要考虑其他更安全的部署方式,比如使用专门的持续集成/持续部署(CI/CD)工具,或者使用 GitHub 提供的部署密钥等方式。

猜你喜欢

转载自blog.csdn.net/m0_57236802/article/details/131619335