libnetconf2  1.1.48
NETCONF library for clients and servers
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Client SSH

Client-side settings for SSH connections. More...

Functions

void nc_client_ssh_set_auth_hostkey_check_clb (int(*auth_hostkey_check)(const char *hostname, ssh_session session, void *priv), void *priv)
 Set SSH authentication hostkey check (knownhosts) callback. More...
 
void nc_client_ssh_get_auth_hostkey_check_clb (int(**auth_hostkey_check)(const char *hostname, ssh_session session, void *priv), void **priv)
 Get currently set SSH authentication hostkey check (knownhosts) callback and its private data previously set by nc_client_ssh_set_auth_hostkey_check_clb(). More...
 
void nc_client_ssh_set_auth_password_clb (char *(*auth_password)(const char *username, const char *hostname, void *priv), void *priv)
 Set SSH password authentication callback. More...
 
void nc_client_ssh_get_auth_password_clb (char *(**auth_password)(const char *username, const char *hostname, void *priv), void **priv)
 Get currently set SSH password authentication callback and its private data previously set by nc_client_ssh_set_auth_password_clb(). More...
 
void nc_client_ssh_set_auth_interactive_clb (char *(*auth_interactive)(const char *auth_name, const char *instruction, const char *prompt, int echo, void *priv), void *priv)
 Set SSH interactive authentication callback. More...
 
void nc_client_ssh_get_auth_interactive_clb (char *(**auth_interactive)(const char *auth_name, const char *instruction, const char *prompt, int echo, void *priv), void **priv)
 Get currently set SSH interactive authentication callback and its private data previously set by nc_client_ssh_set_auth_interactive_clb(). More...
 
void nc_client_ssh_set_auth_privkey_passphrase_clb (char *(*auth_privkey_passphrase)(const char *privkey_path, void *priv), void *priv)
 Set SSH publickey authentication encrypted private key passphrase callback. More...
 
void nc_client_ssh_get_auth_privkey_passphrase_clb (char *(**auth_privkey_passphrase)(const char *privkey_path, void *priv), void **priv)
 Get currently set SSH publickey authentication encrypted private key passphrase callback and its private data previously set by nc_client_ssh_set_auth_privkey_passphrase_clb(). More...
 
int nc_client_ssh_add_keypair (const char *pub_key, const char *priv_key)
 Add an SSH public and private key pair to be used for client authentication. More...
 
int nc_client_ssh_del_keypair (int idx)
 Remove an SSH public and private key pair that was used for client authentication. More...
 
int nc_client_ssh_get_keypair_count (void)
 Get the number of public an private key pairs set to be used for client authentication. More...
 
int nc_client_ssh_get_keypair (int idx, const char **pub_key, const char **priv_key)
 Get a specific keypair set to be used for client authentication. More...
 
void nc_client_ssh_set_auth_pref (NC_SSH_AUTH_TYPE auth_type, int16_t pref)
 Set SSH authentication method preference. More...
 
int16_t nc_client_ssh_get_auth_pref (NC_SSH_AUTH_TYPE auth_type)
 Get SSH authentication method preference. More...
 
int nc_client_ssh_set_username (const char *username)
 Set client SSH username used for authentication. More...
 
const char * nc_client_ssh_get_username (void)
 Get client SSH username used for authentication. More...
 
struct nc_session * nc_connect_ssh (const char *host, uint16_t port, struct ly_ctx *ctx)
 Connect to the NETCONF server using SSH transport (via libssh). More...
 
struct nc_session * nc_connect_libssh (ssh_session ssh_session, struct ly_ctx *ctx)
 Connect to the NETCONF server using the provided SSH (libssh) session. More...
 
struct nc_session * nc_connect_ssh_channel (struct nc_session *session, struct ly_ctx *ctx)
 Create another NETCONF session on existing SSH session using separated SSH channel. More...
 

Detailed Description

Client-side settings for SSH connections.

Function Documentation

void nc_client_ssh_set_auth_hostkey_check_clb ( int(*)(const char *hostname, ssh_session session, void *priv)  auth_hostkey_check,
void *  priv 
)

Set SSH authentication hostkey check (knownhosts) callback.

Repetitive calling causes replacing of the previous callback and its private data. Caller is responsible for freeing the private data when necessary (the private data can be obtained by nc_client_ssh_get_auth_hostkey_check_clb()).

Parameters
[in]auth_hostkey_checkFunction to call, returns 0 on success, non-zero in error. If NULL, the default callback is set.
[in]privOptional private data to be passed to the callback function.
void nc_client_ssh_get_auth_hostkey_check_clb ( int(**)(const char *hostname, ssh_session session, void *priv)  auth_hostkey_check,
void **  priv 
)

Get currently set SSH authentication hostkey check (knownhosts) callback and its private data previously set by nc_client_ssh_set_auth_hostkey_check_clb().

Parameters
[out]auth_hostkey_checkCurrently set callback, NULL in case of the default callback.
[out]privCurrently set (optional) private data to be passed to the callback function.
void nc_client_ssh_set_auth_password_clb ( char *(*)(const char *username, const char *hostname, void *priv)  auth_password,
void *  priv 
)

Set SSH password authentication callback.

Repetitive calling causes replacing of the previous callback and its private data. Caller is responsible for freeing the private data when necessary (the private data can be obtained by nc_client_ssh_get_auth_password_clb()).

Parameters
[in]auth_passwordFunction to call, returns the password for username@hostname. If NULL, the default callback is set.
[in]privOptional private data to be passed to the callback function.
void nc_client_ssh_get_auth_password_clb ( char *(**)(const char *username, const char *hostname, void *priv)  auth_password,
void **  priv 
)

Get currently set SSH password authentication callback and its private data previously set by nc_client_ssh_set_auth_password_clb().

Parameters
[out]auth_passwordCurrently set callback, NULL in case of the default callback.
[out]privCurrently set (optional) private data to be passed to the callback function.
void nc_client_ssh_set_auth_interactive_clb ( char *(*)(const char *auth_name, const char *instruction, const char *prompt, int echo, void *priv)  auth_interactive,
void *  priv 
)

Set SSH interactive authentication callback.

Repetitive calling causes replacing of the previous callback and its private data. Caller is responsible for freeing the private data when necessary (the private data can be obtained by nc_client_ssh_get_auth_interactive_clb()).

Parameters
[in]auth_interactiveFunction to call for every question, returns the answer for authentication name with instruction and echoing prompt. If NULL, the default callback is set.
[in]privOptional private data to be passed to the callback function.
void nc_client_ssh_get_auth_interactive_clb ( char *(**)(const char *auth_name, const char *instruction, const char *prompt, int echo, void *priv)  auth_interactive,
void **  priv 
)

Get currently set SSH interactive authentication callback and its private data previously set by nc_client_ssh_set_auth_interactive_clb().

Parameters
[out]auth_interactiveCurrently set callback, NULL in case of the default callback.
[out]privCurrently set (optional) private data to be passed to the callback function.
void nc_client_ssh_set_auth_privkey_passphrase_clb ( char *(*)(const char *privkey_path, void *priv)  auth_privkey_passphrase,
void *  priv 
)

Set SSH publickey authentication encrypted private key passphrase callback.

Repetitive calling causes replacing of the previous callback and its private data. Caller is responsible for freeing the private data when necessary (the private data can be obtained by nc_client_ssh_get_auth_privkey_passphrase_clb()).

Parameters
[in]auth_privkey_passphraseFunction to call for every question, returns the passphrase for the specific private key.
[in]privOptional private data to be passed to the callback function.
void nc_client_ssh_get_auth_privkey_passphrase_clb ( char *(**)(const char *privkey_path, void *priv)  auth_privkey_passphrase,
void **  priv 
)

Get currently set SSH publickey authentication encrypted private key passphrase callback and its private data previously set by nc_client_ssh_set_auth_privkey_passphrase_clb().

Parameters
[out]auth_privkey_passphraseCurrently set callback, NULL in case of the default callback.
[out]privCurrently set (optional) private data to be passed to the callback function.
int nc_client_ssh_add_keypair ( const char *  pub_key,
const char *  priv_key 
)

Add an SSH public and private key pair to be used for client authentication.

Private key can be encrypted, the passphrase will be asked for before using it.

Parameters
[in]pub_keyPath to the public key.
[in]priv_keyPath to the private key.
Returns
0 on success, -1 on error.
int nc_client_ssh_del_keypair ( int  idx)

Remove an SSH public and private key pair that was used for client authentication.

Parameters
[in]idxIndex of the keypair starting with 0.
Returns
0 on success, -1 on error.
int nc_client_ssh_get_keypair_count ( void  )

Get the number of public an private key pairs set to be used for client authentication.

Returns
Keypair count.
int nc_client_ssh_get_keypair ( int  idx,
const char **  pub_key,
const char **  priv_key 
)

Get a specific keypair set to be used for client authentication.

Parameters
[in]idxIndex of the specific keypair.
[out]pub_keyPath to the public key.
[out]priv_keyPath to the private key.
Returns
0 on success, -1 on error.
void nc_client_ssh_set_auth_pref ( NC_SSH_AUTH_TYPE  auth_type,
int16_t  pref 
)

Set SSH authentication method preference.

The default preference is as follows:

  • interactive authentication (3)
  • password authentication (2)
  • public key authentication (1)
Parameters
[in]auth_typeAuthentication method to modify the preference of.
[in]prefPreference of auth_type. Higher number increases priority, negative values disable the method.
int16_t nc_client_ssh_get_auth_pref ( NC_SSH_AUTH_TYPE  auth_type)

Get SSH authentication method preference.

Parameters
[in]auth_typeAuthentication method to retrieve the prefrence of.
Returns
Preference of the auth_type.
int nc_client_ssh_set_username ( const char *  username)

Set client SSH username used for authentication.

Parameters
[in]usernameUsername to use.
Returns
0 on success, -1 on error.
const char* nc_client_ssh_get_username ( void  )

Get client SSH username used for authentication.

Returns
Username used.
struct nc_session* nc_connect_ssh ( const char *  host,
uint16_t  port,
struct ly_ctx *  ctx 
)

Connect to the NETCONF server using SSH transport (via libssh).

SSH session is created with default options. If the caller needs to use specific SSH session properties, they are supposed to use nc_connect_libssh().

Parameters
[in]hostHostname or address (both Ipv4 and IPv6 are accepted) of the target server. 'localhost' is used by default if NULL is specified.
[in]portPort number of the target server. Default value 830 is used if 0 is specified.
[in]ctxOptional parameter. If set, provides strict YANG context for the session (ignoring what is actually supported by the server side). If not set, YANG context is created for the session using <get-schema> (if supported by the server side) or/and by searching for YANG schemas in the searchpath (see nc_client_schema_searchpath()). In every case except not providing context to connect to a server supporting <get-schema> it is possible that the session context will not include all the models supported by the server.
Returns
Created NETCONF session object or NULL on error.
struct nc_session* nc_connect_libssh ( ssh_session  ssh_session,
struct ly_ctx *  ctx 
)

Connect to the NETCONF server using the provided SSH (libssh) session.

SSH session can have any options set, they will not be modified. If no options were set, host 'localhost', port 22, and the username detected from the EUID is used. If socket is set and connected only the host and the username must be set/is detected. Or the ssh_session can already be authenticated in which case it is used directly.

Parameters
[in]ssh_sessionlibssh structure representing SSH session object. After passing it to libnetconf2 this way, it is fully managed by it (including freeing!).
[in]ctxOptional parameter. If set, provides strict YANG context for the session (ignoring what is actually supported by the server side). If not set, YANG context is created for the session using <get-schema> (if supported by the server side) or/and by searching for YANG schemas in the searchpath (see nc_client_schema_searchpath()). In every case except not providing context to connect to a server supporting <get-schema> it is possible that the session context will not include all the models supported by the server.
Returns
Created NETCONF session object or NULL on error.
struct nc_session* nc_connect_ssh_channel ( struct nc_session *  session,
struct ly_ctx *  ctx 
)

Create another NETCONF session on existing SSH session using separated SSH channel.

Parameters
[in]sessionExisting NETCONF session. The session has to be created on SSH transport layer using libssh - it has to be created by nc_connect_ssh(), nc_connect_libssh() or nc_connect_ssh_channel().
[in]ctxOptional parameter. If set, provides strict YANG context for the session (ignoring what is actually supported by the server side). If not set, YANG context is created for the session using <get-schema> (if supported by the server side) or/and by searching for YANG schemas in the searchpath (see nc_client_schema_searchpath()). In every case except not providing context to connect to a server supporting <get-schema> it is possible that the session context will not include all the models supported by the server.
Returns
Created NETCONF session object or NULL on error.