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

使用SSH将Github构建部署到Inmotionhosting服务器失败求助

部署失败问题排查与解决

错误原因分析

日志中kex_exchange_identification: read: Connection reset by peer和Connection reset by *** port 2222是核心错误,指向SSH连接被服务器主动重置,可能的原因及解决步骤如下:

1. 虚拟主机SSH端口的IP访问限制

多数cPanel虚拟主机会对SSH端口(如2222)设置IP白名单,GitHub Actions的Runner IP不在允许列表内时会被拒绝连接。

  • 解决:登录cPanel,找到SSH访问设置,检查IP白名单规则,添加GitHub Actions的IP段,或临时关闭IP限制进行测试。

2. 私钥格式不兼容

你将密钥转换为PPK格式(Putty专用),但GitHub Actions的SSH客户端需要OpenSSH格式的私钥,PPK格式无法被识别。

  • 解决:使用Puttygen打开PPK文件,点击「Conversions」→「Export OpenSSH key」,导出无密码保护的私钥,更新GitHub Secrets中的PRIVATE_SSH_KEY为该内容。

3. SSH密钥未正确授权

即使生成了密钥,若公钥未添加到cPanel的「SSH授权密钥」列表,或~/.ssh/authorized_keys文件权限错误,会导致密钥验证失败。

  • 解决:在cPanel的SSH设置中确认公钥已正确添加;检查服务器上~/.ssh/authorized_keys权限为600,~/.ssh目录权限为700。

4. 同步源路径错误

当前脚本同步的是仓库根目录./,但你需要部署的是dist目录,错误的源路径可能导致文件传输异常,甚至触发服务器的安全限制。

  • 解决:在web-deploy步骤中添加local-dir: ./dist/参数,指定仅同步构建后的产物目录:
    - name: 📂 Sync Files
      uses: SamKirkland/web-deploy@v1
      with:
        target-server: ${{ secrets.HOST }}
        ssh-port: 2222
        remote-user: ${{ secrets.USERNAME }}
        private-ssh-key: ${{ secrets.PRIVATE_SSH_KEY }}
        destination-path: ${{ secrets.PATH }}
        local-dir: ./dist/ # 新增此参数
    
Vue3+Webpack合并JS文件配置

1. 优化代码分割(推荐)

通过Webpack的splitChunks配置,将第三方依赖、公共代码合并为少量文件,同时保留合理的代码分割以优化加载速度。修改项目根目录的vue.config.js:

module.exports = {
  configureWebpack: {
    optimization: {
      splitChunks: {
        chunks: 'all',
        // 合并所有第三方依赖到单个vendors文件
        cacheGroups: {
          vendor: {
            test: /[\\/]node_modules[\\/]/,
            name: 'vendors',
            chunks: 'all'
          },
          // 合并项目内公共代码到common文件
          common: {
            name: 'common',
            minChunks: 2,
            chunks: 'all',
            priority: -10,
            reuseExistingChunk: true
          }
        }
      }
    }
  }
}

2. 禁用代码分割(生成单个JS文件)

若项目规模较小,可完全禁用代码分割,生成单个bundle文件:

module.exports = {
  configureWebpack: {
    optimization: {
      splitChunks: false,
      runtimeChunk: false // 同时禁用runtime chunk
    }
  }
}

3. 移除路由懒加载

若项目使用了路由懒加载(如const Home = () => import('./views/Home.vue')),会自动生成多个chunk文件。如需合并,改为直接导入:

// 替换懒加载写法
import Home from './views/Home.vue'

const routes = [
  { path: '/', component: Home }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 18:51:13