Blame examples/connect_ssh.c

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
}