是的,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 提供的部署密钥等方式。