2016-10-26 14 views
1

libssh 0.7.0을 사용하여 내 프로그램에 SSH 통신을 포함하려고했습니다. 나는이 "부족에 관련된 아무것도 찾을 수 없습니다, 소스 라이브러리의 코드와 그 문서를 검색 한 후libssh : ssh_is_host_known (암호화 컨텍스트없이 호출 됨)

[2016/10/26 16:38:56.280261, 1] ssh_is_server_known: ssh_is_host_known called without cryptographic context 

: 나는 원격 시스템에 대한 간단한 연결을 만들 튜토리얼을 따라하지만 난이 오류를 건너 왔어요 "문제를 해결하는 데 도움이 될 수있는 암호화 컨텍스트를 제공합니다. 여기

내가 실행하기 위해 노력하고있어 코드입니다 (이 함수의 일부, IP 주소와 사용자가 실제 사람 아니다) :
ssh_session session; 
int verbosity = SSH_LOG_PROTOCOL; 
int port = 22; 
int state; 

ssh_init(); 

session = ssh_new(); 
if (session == NULL){ 
    printf("Failed to create SSH session\n"); return NULL; 
} 

ssh_options_set(session, SSH_OPTIONS_HOST, "111.111.111.111"); 
ssh_options_set(session, SSH_OPTIONS_USER, "user"); 
ssh_options_set(session, SSH_OPTIONS_LOG_VERBOSITY, &verbosity); 
ssh_options_set(session, SSH_OPTIONS_PORT, &port); 

state = ssh_is_server_known(session); 
if(state != SSH_SERVER_KNOWN_OK){ 
    printf("SSH Server is not known\n"); 
} 

(나는 ssh_init()하지만를 호출하지 않고이 부분을 실행하려고 두 경우 모두에 오류가 발생했습니다).

+0

자습서에 대한 링크가 도움이 될 것입니다. – Jakuje

답변

0

tour (tutorial) on official page에 따르면 서버가 알려져 있는지 확인하기 전에 (서버에서 호스트 키를 보내야 함) 서버에 연결해야합니다. 따라서 ssh_is_server_known()을 확인하기 전에

rc = ssh_connect(my_ssh_session); 
if (rc != SSH_OK) 
{ 
    fprintf(stderr, "Error connecting to localhost: %s\n", 
      ssh_get_error(my_ssh_session)); 
    exit(-1); 
} 

을 추가하십시오.

+0

답장을 보내 주셔서 감사합니다! 예상대로, 그것은 문제를 해결했다;) 나는 실행하려고했던 튜토리얼의 코드가 실제 주요 기능이 아니라 서버에 연결 한 후 호출되는 함수라는 것을 알지 못했다. –