【发布时间】:2017-06-05 10:30:44
【问题描述】:
我正在使用 libssh 的 C++ 包装器 (libsshpp.hpp),我正在尝试调用 ssh_scp_new 作为 SCP 例程,方法是给它我的 ssh::Session 变量但我收到以下错误:
cannot convert ‘ssh::Session’ to ‘ssh_session {aka ssh_session_struct*}’ for argument ‘1’ to ‘ssh_scp_struct* ssh_scp_new(ssh_session, int, const char*)’
我可以通过完全不使用 C++ ssh::Session 类并使用 C example 来让 SCP 工作,但显然这不是我首选的解决方法。查看 libsshpp.hpp 我能够找到一个 getCSession() 函数,但它只能私人访问,我不知道如何使用它(或者它是否甚至我认为是)。
这是我的示例代码:
#include <iostream>
#include <fstream>
#include <libssh/libsshpp.hpp>
int main()
{
int port = 22;
int verbosity = SSH_LOG_PROTOCOL;
ssh::Session session;
try
{
session.setOption(SSH_OPTIONS_LOG_VERBOSITY, &verbosity);
session.setOption(SSH_OPTIONS_PORT, &port);
session.setOption(SSH_OPTIONS_USER, "user");
session.setOption(SSH_OPTIONS_HOST, "host");
session.connect();
if (session.isServerKnown() != SSH_SERVER_KNOWN_OK)
{
if (session.writeKnownhost() != SSH_OK)
{
std::cout << "writeKnownHost failed" << std::endl;
}
else
{
session.connect();
}
}
if (session.userauthPassword("password") !=
SSH_AUTH_SUCCESS)
{
std::cout << "Authentication Error" << std::endl;
}
ssh_scp scp;
int rc;
// error cannot convert ‘ssh::Session’ to ‘ssh_session {aka ssh_session_struct*}’
scp = ssh_scp_new(session, SSH_SCP_WRITE | SSH_SCP_RECURSIVE, ".");
}
catch (ssh::SshException e)
{
std::cout << "Error during connection : ";
std::cout << e.getError() << std::endl;
}
return 0;
}
如何使用 C++ 方法通过 libssh SCP 发送或接收文件?
谢谢!
【问题讨论】: