MacOS – libssh2 – Agent Forwarding not working

iosmacosobjective cssh-agentsshd

I am using libssh2 library to ssh connections in my mobile application. Here I want to use Agent Forwarding support.

I have followed same procedure as they have provided in example here LibSSH2 Agent Forwarding.

I am able to create agent successfully but when I try to connect it with libssh2_agent_connect(agent) It gives me error -39 LIBSSH2_ERROR_BAD_USE.

Well I am checking same thing using MAC OSX terminal and it's working fine. Please suggest if anything wrong,

This is how I am trying once do successful connection

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;
}

Is there anything wrong here? please suggest.

Best Answer

From the code at 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");

So obviously, this error is happening because you don't have the environment variable pointing to the agent socket set correctly. Have your code print the value of getenv("SSH_AUTH_SOCK") in case of an error to confirm this.