аутентифицироваться на SSH через BSD сокет - PullRequest
3 голосов
/ 10 января 2011

Я бы хотел пройти аутентификацию на ssh-сервере через BSD-сокет. Я знаю, как установить соединение, но не знаю, как на самом деле пройти аутентификацию. Спасибо за ваше время, когда указываете мне правильное направление.

Вот исходный код:

//
#include <stdio.h>      // printf()
#include <sys/types.h>  // socket data types
#include <sys/socket.h> // socket(), connect(), send(), recv()
#include <arpa/inet.h>  // sockaddr_in, inet_addr()
#include <stdlib.h>     // free()
#include <unistd.h>     // close()

int *ssh(char *host, int port, char *user, char *pass);

int main(void)
{
// create socket
int *ssh_socket = ssh("127.0.0.1", 22, "root", "password");

// close and free
close(*ssh_socket);
free(ssh_socket);

return 0;
}

int *ssh(char *host, int port, char *user, char *pass)
{
int *sock = calloc(sizeof(int), 1);
struct sockaddr_in addr = {.sin_family=AF_INET, \
                           .sin_port=htons(port), \
                           .sin_addr.s_addr=inet_addr(host)};

*sock=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); // create socket
connect(*sock, (struct sockaddr *)&addr, sizeof(addr)); // init connection


// here is the problem
// how do I authenticate on this socket?


return sock;
}

Ответы [ 2 ]

1 голос
/ 19 января 2011

SSH - довольно сложный протокол с несколькими уровнями.

Прежде чем приступить к аутентификации пользователя, вам нужно инициировать протокол, проверить учетные данные удаленного хоста и запустить зашифрованное соединение.что существует несколько способов аутентификации пользователя, которого вы, возможно, захотите поддерживать (открытый ключ, пароль, интерактивная клавиатура и т. д.).

На странице Википедии для SSH есть ссылки на всесоответствующие RFC.

Действительно, используйте libssh или libssh2 или код из OpenSSH!

1 голос
/ 10 января 2011

Используйте libssh для добавления функциональности SSH в вашу программу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...