天天看点

libssh2_session_handshake——执行SSH握手

#include <libssh2.h>

int libssh2_session_handshake(LIBSSH2_SESSION *session, libssh2_socket_t socket); 
           

1.描述

session ——由libssh2_session_init_ex返回的会话实例

socket ——连接的套接字描述符。通常,协议中的TCP连接允许任何可靠的传输,库将尝试使用任何berkeley套接字。

开始与连接主机的传输层协议协商。

套接字是网络通信路径的本地端点的抽象表示(句柄)。

Berkeley sockets API将其表示为Unix中的一个文件描述符(文件句柄),它为数据流的输入和输出提供了一个公共接口。简单来说:它们是利用标准 UNIX file descriptors(文件描述符)与其它程序沟通的一种方式。

2.返回值

成功时返回0,失败时返回负数。

3.错误

LIBSSH2_ERROR_SOCKET_NONE-套接字无效。

LIBSSH2_ERROR_BANNER_SEND-无法将标语发送到远程主机。

LIBSSH2_ERROR_KEX_FAILURE->与远程主机的加密密钥交换失败。

LIBSSH2_ERROR_SOCKET_SEND-无法在套接字上发送数据。

LIBSSH2_ERROR_SOCKET_DISCONNECT-套接字已断开连接。

LIBSSH2_ERROR_PROTO-套接字上收到无效的SSH协议响应。

LIBSSH2_ERROR_EAGAIN-标记为非阻塞I / O,但调用将阻塞。