【问题标题】:Unable to connect to ssh server using system() function in C++无法使用 C++ 中的 system() 函数连接到 ssh 服务器
【发布时间】:2020-09-05 05:33:25
【问题描述】:

我正在尝试使用我编写的一个简单的 C++ 程序连接到我学校的 ssh 服务器。我的 windows 电脑安装了 OpenSSH 客户端,我可以使用命令提示符建立连接。

这是通过命令提示符工作的方式:

C:\Users\Username>ssh username@example.server.name
Password:
Last login: Sat Sep  5 15:20:44 2020 from 117.194.240.211

username@example:~$

我希望用我写的一个简单的 C++ 程序来复制这个动作。这是代码。

#include <iostream>
#include <cstring>
#include <stdlib.h>

using namespace std;

int main()
{
    string hostIP;
    string username;
    string password;

    cout << "Welcome to SSH Program" << endl;
    cout << "----------------------" << endl;

    cout << "\nEnter host ip or name: ";
    cin >> hostIP;

    cout << "Enter username: ";
    cin >> username;

    cout << "\nConnecting...\n" << endl;

    string composite = "ssh " + username + "@" + hostIP;

    char command[100];
    strcpy_s(command, composite.c_str());

    system(command);

    system("pause");
}

不幸的是,当我尝试运行此程序时,我得到以下输出:

Welcome to SSH Program
----------------------

Enter host ip or name: example.server.name
Enter username: username

Connecting...

'ssh' is not recognized as an internal or external command,
operable program or batch file.
Press any key to continue . . .

据我了解,只有在我的系统上未安装 OpenSSH 客户端时才会出现此消息。但正如命令提示符示例所证明的那样。

为什么会发生这种情况,有办法解决吗?

【问题讨论】:

  • 您的PATH 变量是否包含指向您计算机上存储ssh 的路径?您可以从控制台手动运行它吗?您也许可以使用安装ssh 的完整路径来修复它。
  • 唯一的解释是您运行程序的环境与运行命令提示符的环境不同。具体来说,PATH 变量必须不同。
  • 您可以从命令提示符获取 PATH 变量,只需键入 PATH。您可以使用 #include &lt;cstdlib&gt;cout &lt;&lt; getenv("PATH") &lt;&lt; '\n'; 从程序中获取 PATH 变量
  • @MauriceKasomwung IIRC 项目/属性/调试/环境。我认为即使在没有调试的情况下启动程序也是如此。
  • 在命令 propt 中键入“路径”将永远不会输出您声称的内容,除非安装了小型 cmdlet。您应该可以使用system("C:\\WINDOWS\\System32\\OpenSSH\\ssh.exe"),但应该可以按上述方式工作。

标签: c++ ssh client system


【解决方案1】:

感谢所有对此问题发表评论和帮助的人。原来这是我正在为其构建程序的平台的问题。该平台最初设置为 x86,但一旦我将其更改为 x64,一切都按预期工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-10
    • 2016-07-15
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 2017-07-17
    • 1970-01-01
    相关资源
    最近更新 更多