我正在使用libssh2
库在我的移动应用程序中进行 ssh 连接。这里我想使用Agent Forwarding
支持。
我遵循了他们在此处示例中提供的相同程序LibSSH2 代理转发。
我可以成功创建代理,但是当我尝试连接它时,libssh2_agent_connect(agent)
它给出了错误-39 LIBSSH2_ERROR_BAD_USE
。
嗯,我正在使用检查同样的事情MAC OSX 终端运行良好。如有错误,请提出建议,
这就是我尝试成功连接的方法
struct libssh2_agent_publickey *identity, *prev_identity = NULL;
int rc;
agent = libssh2_agent_init(session);
if (!agent)
{
fprintf(stderr, "Failure initializing ssh-agent support\n");
rc = 1;
}
int temp=libssh2_agent_connect(agent);
if (temp)
{
fprintf(stderr, "Failure connecting to ssh-agent\n");
rc = 1;
}
这里有什么问题吗?请提出建议。
答案1
从代码中https://github.com/libssh2/libssh2/blob/master/src/agent.c
path = getenv("SSH_AUTH_SOCK");
if (!path)
return _libssh2_error(agent->session, LIBSSH2_ERROR_BAD_USE,
"no auth sock variable");
显然,发生此错误是因为您没有正确设置指向代理套接字的环境变量。getenv("SSH_AUTH_SOCK")
如果发生错误,请让您的代码打印值以确认这一点。