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

Windows下Qt C++程序通过SSH执行Linux命令失败求助

Qt C++ Windows应用执行SSH命令失败排查

问题概述

我有一个运行在Windows主机上的Qt C++应用程序,需要通过SSH在Linux机器上执行命令,但尝试多种方法均未成功:

  • 使用QProcess执行ssh <user>@<address> "command"、cmd /c "ssh <user>@<address> \"command\""及PowerShell命令均无效果
  • 调用system()函数也无作用
  • 尝试添加runas /user:Administrator前缀执行上述命令,情况依旧
  • 将SSH命令写入bat文件后执行,仍然失败

直接执行ssh无输出且未运行;添加cmd /c或PowerShell前缀时,提示:

ssh is not recognized as an internal or external command, operable program or batch file

我了解可以使用libssh或libssh2,但要求尽量避免,仅在无其他方案时使用。

尝试过的代码片段

  1. QProcess基础调用:
QProcess* proc = new QProcess();
proc->start("ssh", {"<user>@<address>",  "\"<command>\""}); 
proc->waitForFinished();
QString str = proc->readAll();
std::cout << "out: "+ QString::number(proc->exitCode()) + " -- " + str;
  1. 上述代码中替换为ssh.exe完整路径执行
  2. QProcess结合cmd的调用:
proc->start("cmd", {"/c", "ssh", "<user>@<address>",  "\"<command>\""});
  1. system()函数调用:
int ret = system("cmd /c \"ssh -t <user>@<address> \\\"<command>\\\"\"");
std::cout << "ret: " << QString::number(ret).toStdString();

(注:原代码存在语法错误,已修正多余括号)

问题根源发现

从应用程序中执行dir c:\Windows\System32看不到OpenSSH文件夹,但直接在CMD中执行该命令时,该文件夹存在且包含ssh.exe。请问如何让我的应用程序访问到该文件夹?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:57:27