Неопределенный символ во время ссылки с использованием libssh

0

Я использую libssh для установления соединения между двумя системами, ssh-сервер - redhat, а клиент - CentOS. Мой код компилируется и ссылки очень хорошо, за исключением того, что во время выполнения я все время вижу это,



    [1] libssh 0.5.5 (c) 2003-2010 Aris Adamantiadis ([email protected]) Distributed under the LGPL, please refer to COPYING file for information about your rights, using threading threads_noop
    [2] Nonblocking connection socket: 4
    [2] Socket connecting, now waiting for the callbacks to work
    [1] Socket connection callback: 1 (0)
    [1] SSH server banner: SSH-2.0-OpenSSH_5.3
    [1] Analyzing banner: SSH-2.0-OpenSSH_5.3
    [1] We are talking to an OpenSSH client version: 5.3 (50300)
    [2] Received SSH_KEXDH_REPLY
    [2] SSH_MSG_NEWKEYS sent
    [2] Received SSH_MSG_NEWKEYS
    ./sshclient: symbol lookup error: ./sshclient: undefined symbol: ssh_pki_import_privkey_file

Код выглядит так,



    int main()
    {
            ssh_session my_ssh_session;
            ssh_key *pubkey,*privkey;
            int verbosity = SSH_LOG_PROTOCOL;
            int port = 5022,rc;
            char username[20];

            strcpy(username,"yoda"); //assigned a user name
            my_ssh_session = ssh_new();
            if (my_ssh_session == NULL)
                    exit(-1);
            ssh_options_set(my_ssh_session, SSH_OPTIONS_HOST, "XX.XX.XX.XX");
            ssh_options_set(my_ssh_session, SSH_OPTIONS_LOG_VERBOSITY, &verbosity);
            ssh_options_set(my_ssh_session, SSH_OPTIONS_PORT, &port);
            ssh_options_set(my_ssh_session, SSH_OPTIONS_USER, username);

            rc = ssh_connect(my_ssh_session);
            if(rc != SSH_OK){
                    fprintf(stderr, "Error connecting to host: %s\n",ssh_get_error(my_ssh_session));
                    exit(-1);
            }
            rc = ssh_pki_import_privkey_file("/home/yoda/keys/id_rsa",NULL,NULL,NULL,privkey);
            if(rc != SSH_OK){
                    fprintf(stderr, "Custom Message: Private Key unacceptable.\n");
                    exit(-1);
            }
            fprintf(stdout, "Custom Message: Here now.\n");
            rc = ssh_userauth_publickey(my_ssh_session, NULL, *privkey);
            if(rc == SSH_AUTH_ERROR){
                    fprintf(stderr, "Custom Message: A serious error has occured during authentication.\n");
                    exit(-1);
            }
            if(rc == SSH_AUTH_DENIED){
                    fprintf(stderr, "Custom Message: Unacceptable key or method.\n");
                    exit(-1);
            }
            if(rc == SSH_AUTH_PARTIAL){
                    fprintf(stderr, "Custom Message: Partially authenticated user.\n");
                    exit(-1);
            }
            ssh_key_free(*pubkey);
            ssh_key_free(*privkey);
            ssh_disconnect(my_ssh_session);
            ssh_free(my_ssh_session);
            return(0);
    }

Я знаю, что с этим кодом возникает множество проблем, но на данный момент я впервые экспериментирую с этой библиотекой и больше беспокоюсь о том, чтобы заставить ее работать. Любое понимание того, что происходит, будет оценено по достоинству.

Спасибо, Рахул

  • 0
    Это больше похоже на проблему компиляции - можете ли вы опубликовать команды, которые вы используете для компиляции кода?
  • 0
    gcc -o sshclient sshRS.c -L / home / rs / libssh / lib -lssh -I / home / rs / libssh / include
Теги:
ssh
openssh
libssh

1 ответ

0

libssh 0.5 не поддерживается. Вы должны использовать libssh 0.6. Если я правильно помню, ssh_pki_import_privkey_file() доступен только с libssh 0.6...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню