GitHub Actions中先连OpenVPN再SSH访问AWS服务器的配置求助
解决GitHub Actions中OpenVPN连接失败的思路
核心错误分析
你遇到的***: not found和-----END: not found错误,本质是证书类Secrets的格式解析错误:GitHub Secrets中的多行证书内容被shell当成零散命令执行,同时你的ovpn配置文件可能未正确引用环境变量,导致action无法生成有效VPN配置。
具体解决步骤
1. 修复GitHub Secrets的多行格式
将CA_CRT、USER_CRT、USER_KEY(以及TLS_CRYPT)的完整内容直接复制粘贴到GitHub Secrets中,确保包含开头的-----BEGIN CERTIFICATE-----和结尾的-----END CERTIFICATE-----行,不要手动删除换行或修改格式。GitHub会自动保留多行内容格式,避免shell解析时把证书每行当成独立命令。
2. 调整ovpn配置文件的变量引用
打开你的.github/vpn/config.ovpn,将原有涉及证书的路径配置替换为action要求的占位符:
# 替换原来的ca、cert、key、tls-crypt路径配置 ca {{ CA_CRT }} cert {{ USER_CRT }} key {{ USER_KEY }} tls-crypt {{ TLS_CRYPT }} # 若你的VPN使用tls-crypt,必须添加这一行
注意:如果原ovpn文件中有auth-user-pass或其他需要用户名密码的配置,直接删除(你无相关凭据)。
3. 补充TLS-Crypt的环境变量配置
既然你提到VPN使用tls-crypt,需完成两步:
- 在GitHub Secrets中新增
TLS_CRYPT,值为你的tls-crypt密钥完整多行内容。 - 在Connect VPN步骤的env中添加:
TLS_CRYPT: ${{ secrets.TLS_CRYPT }}
4. 修正Action版本与YAML缩进
- 避免使用
master分支的action,改用固定稳定版本,比如:uses: golfzaptw/action-connect-ovpn@v1.3 - 检查
Install Open VPN步骤的缩进,确保和其他steps对齐(原代码中该步骤缩进多了一个空格,属于YAML语法隐患)。
5. 本地验证VPN配置有效性
在本地执行openvpn --config config.ovpn命令,测试配置文件和证书是否能正常连接,排除证书本身或配置文件的原生错误。
调整后的完整步骤示例
steps: - name: Checkout uses: actions/checkout@v3 - name: Install Open VPN run: sudo apt-get update && sudo apt-get install -y openvpn - name: Connect VPN uses: golfzaptw/action-connect-ovpn@v1.3 id: connect_vpn with: PING_URL: ${{ secrets.REMOTE_HOST_URL }} FILE_OVPN: '.github/vpn/config.ovpn' env: CA_CRT: ${{ secrets.CA_CRT}} USER_CRT: ${{ secrets.USER_CRT }} USER_KEY: ${{ secrets.USER_KEY }} TLS_CRYPT: ${{ secrets.TLS_CRYPT }} # 新增tls-crypt配置 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ env.AWS_REGION }}
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

