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

SSH连接成功后执行SCP上传DLL立即报lost connection故障求助

故障原因及排查解决方法

核心故障原因

结合脚本逻辑和Windows远程主机的场景,常见诱因如下:

  • 第一条ssh命令中powershell调用方式错误:直接执行powershell.exe不加参数会启动交互式powershell会话,无法自动执行后续的停止服务脚本,甚至会导致ssh会话异常残留,影响后续scp连接建立
  • scp目标路径包含空格未做嵌套转义:当前仅在本地对路径加了双引号,远程sshd解析路径时仍然会按空格截断,导致访问不存在的路径触发连接中断
  • 远程路径权限/存在性问题:目标路径/Bin/File Watcher Service不存在,或者DLL_Uploader用户对该路径没有写入权限,会触发scp主动断开连接

排查解决步骤

  • 修正ssh命令的powershell调用逻辑
    执行单条powershell命令需要添加-Command参数,无需额外添加exit语句,powershell执行完指定命令后会自动退出:

    ssh -p 29170 DLL_Uploader@XXX.XXX.XX.XXX "powershell.exe -Command '.\stop_file_watcher.ps1'"
    

    执行后可添加echo $?验证命令返回值,返回0说明停止服务操作执行成功。

  • 修正scp的路径转义规则
    对包含空格的远程路径添加单引号嵌套,避免远程解析时路径被截断:

    scp -P 29170 $1 "DLL_Uploader@XXX.XXX.XX.XXX:'/Bin/File Watcher Service'"
    

    也可以直接转义空格:

    scp -P 29170 $1 DLL_Uploader@XXX.XXX.XX.XXX:/Bin/File\ Watcher\ Service
    
  • 单独验证scp链路
    暂时注释掉前后两条ssh命令,直接运行带-vvv参数的scp命令:

    1. 若认证阶段就断开:检查DLL_Uploader用户的密钥/密码配置是否正确,远程sshd是否允许该用户登录
    2. 若认证通过后断开:登录远程主机确认/Bin/File Watcher Service路径存在,且DLL_Uploader用户对该路径有写入权限,同时检查远程sshd配置中的sftp子系统配置是否正常。
  • 修正完整脚本
    最终调整后的脚本参考:

    # 停止服务
    ssh -p 29170 DLL_Uploader@XXX.XXX.XX.XXX "powershell.exe -Command '.\stop_file_watcher.ps1'"
    if [ $? -ne 0 ]; then
        echo "停止服务失败,终止后续操作"
        exit 1
    fi
    # 上传DLL
    scp -P 29170 $1 "DLL_Uploader@XXX.XXX.XX.XXX:'/Bin/File Watcher Service'"
    if [ $? -ne 0 ]; then
        echo "DLL上传失败"
        exit 1
    fi
    # 启动服务
    ssh -p 29170 DLL_Uploader@XXX.XXX.XX.XXX "powershell.exe -Command '.\start_file_watcher.ps1'"
    

内容的提问来源于stack exchange,提问作者jack gallerdude galler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:54:03