Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行) 我试图通过我的C++应用程序通过SSH连接服务器(并发送一个关闭命令)。我已通知服务器我的SSH密钥(基于FreeBSD的Freenas服务器上更新的授权密钥)_C++_Linux_Ssh_Console - Fatal编程技术网

SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行) 我试图通过我的C++应用程序通过SSH连接服务器(并发送一个关闭命令)。我已通知服务器我的SSH密钥(基于FreeBSD的Freenas服务器上更新的授权密钥)

SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行) 我试图通过我的C++应用程序通过SSH连接服务器(并发送一个关闭命令)。我已通知服务器我的SSH密钥(基于FreeBSD的Freenas服务器上更新的授权密钥),c++,linux,ssh,console,C++,Linux,Ssh,Console,以下控制台命令立即工作(Manjaro Linux控制台): 我试图使用C++代码中的以下命令来做完全相同的操作: execl("/sbin/ssh", "ssh", "-i /home/[uname]/.ssh/amd_freenas", "root@192.168.178.48", "poweroff", (char*)NULL); 当从我的程序调用时,控制台输出一致地说,我的SSH文件不存在,这是不正确的,因为直接控制台命令也没有问题(图中显示了比较,上面的命令来自代码,下面的命令直接在

以下控制台命令立即工作(Manjaro Linux控制台):

我试图使用C++代码中的以下命令来做完全相同的操作:

execl("/sbin/ssh", "ssh", "-i /home/[uname]/.ssh/amd_freenas", "root@192.168.178.48", "poweroff", (char*)NULL);
当从我的程序调用时,控制台输出一致地说,我的SSH文件不存在,这是不正确的,因为直接控制台命令也没有问题(图中显示了比较,上面的命令来自代码,下面的命令直接在控制台中)。 错误输出为:

Warning: Identity file  /home/al/.ssh/amd_freenas not accessible: No such file or directory.
我试图更改文件(chmod 600)的权限,我试图将其移动到其他位置并从那里读取。我不知道为什么这不起作用。该文件是我的私钥,因此应该是正确的。有人能帮忙吗

ssh
-i
后面的空格解释为文件名的一部分。您可以看到,在错误消息中,密钥文件的名称前面有一个额外的空格,因为ssh认为该名称有一个前导空格

应通过以下方式之一指定参数:

execl("/sbin/ssh", "ssh", "-i", "/home/[uname]/.ssh/amd_freenas", ...


SSH作为库提供。为什么要调用预构建的可执行文件?@JesperJuhl,因为发送一个SSH命令需要10行代码。够了,谢谢你,你是个传奇。我自己也不会知道的,谢谢!刚刚对它进行了测试,它可以将选项与不带空格的路径共同命名:-i/home/al/.ssh/amd_freenas
execl("/sbin/ssh", "ssh", "-i /home/[uname]/.ssh/amd_freenas", ...

Warning: Identity file  /home/al/.ssh/amd_freenas not accessible
                      ^^
execl("/sbin/ssh", "ssh", "-i", "/home/[uname]/.ssh/amd_freenas", ...
execl("/sbin/ssh", "ssh", "-i/home/[uname]/.ssh/amd_freenas", ...