|
Packit Service |
31306d |
/*
|
|
Packit Service |
31306d |
* connect_ssh.c
|
|
Packit Service |
31306d |
* This file contains an example of how to connect to a
|
|
Packit Service |
31306d |
* SSH server using libssh
|
|
Packit Service |
31306d |
*/
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
/*
|
|
Packit Service |
31306d |
Copyright 2009 Aris Adamantiadis
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
This file is part of the SSH Library
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
You are free to copy this file, modify it in any way, consider it being public
|
|
Packit Service |
31306d |
domain. This does not apply to the rest of the library though, but it is
|
|
Packit Service |
31306d |
allowed to cut-and-paste working code from this file to any license of
|
|
Packit Service |
31306d |
program.
|
|
Packit Service |
31306d |
The goal is to show the API in action. It's not a reference on how terminal
|
|
Packit Service |
31306d |
clients must be made or how a client should react.
|
|
Packit Service |
31306d |
*/
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
#include <libssh/libssh.h>
|
|
Packit Service |
31306d |
#include "examples_common.h"
|
|
Packit Service |
31306d |
#include <stdio.h>
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
ssh_session connect_ssh(const char *host, const char *user,int verbosity){
|
|
Packit Service |
31306d |
ssh_session session;
|
|
Packit Service |
31306d |
int auth=0;
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
session=ssh_new();
|
|
Packit Service |
31306d |
if (session == NULL) {
|
|
Packit Service |
31306d |
return NULL;
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
if(user != NULL){
|
|
Packit Service |
31306d |
if (ssh_options_set(session, SSH_OPTIONS_USER, user) < 0) {
|
|
Packit Service |
31306d |
ssh_free(session);
|
|
Packit Service |
31306d |
return NULL;
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
if (ssh_options_set(session, SSH_OPTIONS_HOST, host) < 0) {
|
|
Packit Service |
31306d |
ssh_free(session);
|
|
Packit Service |
31306d |
return NULL;
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
ssh_options_set(session, SSH_OPTIONS_LOG_VERBOSITY, &verbosity);
|
|
Packit Service |
31306d |
if(ssh_connect(session)){
|
|
Packit Service |
31306d |
fprintf(stderr,"Connection failed : %s\n",ssh_get_error(session));
|
|
Packit Service |
31306d |
ssh_disconnect(session);
|
|
Packit Service |
31306d |
ssh_free(session);
|
|
Packit Service |
31306d |
return NULL;
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
if(verify_knownhost(session)<0){
|
|
Packit Service |
31306d |
ssh_disconnect(session);
|
|
Packit Service |
31306d |
ssh_free(session);
|
|
Packit Service |
31306d |
return NULL;
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
auth=authenticate_console(session);
|
|
Packit Service |
31306d |
if(auth==SSH_AUTH_SUCCESS){
|
|
Packit Service |
31306d |
return session;
|
|
Packit Service |
31306d |
} else if(auth==SSH_AUTH_DENIED){
|
|
Packit Service |
31306d |
fprintf(stderr,"Authentication failed\n");
|
|
Packit Service |
31306d |
} else {
|
|
Packit Service |
31306d |
fprintf(stderr,"Error while authenticating : %s\n",ssh_get_error(session));
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
ssh_disconnect(session);
|
|
Packit Service |
31306d |
ssh_free(session);
|
|
Packit Service |
31306d |
return NULL;
|
|
Packit Service |
31306d |
}
|