You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions中SSH执行cat命令无输出及命令未找到问题求助

问题排查与解决步骤

1. 先确保私钥正确写入文件

你遇到的cat无输出问题,大概率是私钥写入时就出了错——引号混用导致环境变量解析异常,或者特殊字符被截断:

  • 错误写法的核心问题:ssh chefnode -t 'echo "$INFRA_PRIVATE_KEY" > "/home/'$SSH_NODE_USER'/.ssh/id_rsa"' 中,$INFRA_PRIVATE_KEY会被远程服务器解析(但远程没有这个变量),而$SSH_NODE_USER被本地runner解析,导致写入的内容为空或不完整。
  • 正确写入方式:用双引号包裹整个SSH命令,让GitHub Actions先解析变量,同时用printf避免echo处理换行的缺陷:
    - name: Write private key to remote server
      run: |
        ssh chefnode -t "printf '%s' '${INFRA_PRIVATE_KEY}' > /home/${SSH_NODE_USER}/.ssh/id_rsa"
    

2. 正确执行cat命令查看内容

之前的命令错误多源于引号使用不当或变量解析逻辑错误,试试以下几种可靠写法:

  • 让GitHub Actions先解析$SSH_NODE_USER(推荐):
    - name: Check id_rsa content
      run: |
        ssh chefnode -t "cat /home/${SSH_NODE_USER}/.ssh/id_rsa"
    
  • 若远程服务器已定义SSH_NODE_USER变量,让远程解析:
    - name: Check id_rsa content
      run: |
        ssh chefnode -t 'cat /home/$SSH_NODE_USER/.ssh/id_rsa'
    
  • 修复之前的cd命令错误(分号后多余引号导致命令识别失败):
    - name: Check id_rsa via cd
      run: |
        ssh chefnode -t "cd /home/${SSH_NODE_USER}/.ssh && cat id_rsa"
    

3. 额外排查点

  • 检查文件权限与存在性:写入私钥后需设置600权限,同时可通过ls确认文件是否存在:
    - name: Verify file and permissions
      run: |
        ssh chefnode -t "chmod 600 /home/${SSH_NODE_USER}/.ssh/id_rsa && ls -l /home/${SSH_NODE_USER}/.ssh/ && cat /home/${SSH_NODE_USER}/.ssh/id_rsa"
    
  • 若出现cat command not found,使用绝对路径执行(避免远程PATH配置问题):
    - name: Check id_rsa with absolute path
      run: |
        ssh chefnode -t "/bin/cat /home/${SSH_NODE_USER}/.ssh/id_rsa"
    

内容的提问来源于stack exchange,提问作者RAnand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:31:17