/[LeafOK_CVS]/lbbs/src/test_ssh_server.c
ViewVC logotype

Contents of /lbbs/src/test_ssh_server.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations)
Tue Jun 3 13:58:21 2025 UTC (9 months, 2 weeks ago) by sysadm
Branch: MAIN
Content type: text/x-csrc
Add test_ssh_server

1 #include "log.h"
2 #include <stdio.h>
3 #include <libssh/libssh.h>
4 #include <libssh/server.h>
5 #include <libssh/callbacks.h>
6
7 static int ssh_auth_password_cb(ssh_session session, const char *user, const char *password, void *userdata)
8 {
9 if (strcmp(user, "test") == 0 && strcmp(password, "123456") == 0)
10 {
11 return SSH_AUTH_SUCCESS;
12 }
13
14 log_std("Debug: SSH Auth OK\n");
15 return SSH_AUTH_DENIED;
16 }
17
18 int ssh_server(const char *hostaddr, unsigned int port)
19 {
20 ssh_bind sshbind;
21 ssh_session session;
22 ssh_channel channel;
23 int ssh_log_level = SSH_LOG_PROTOCOL;
24 struct ssh_server_callbacks_struct cb = {
25 .userdata = NULL,
26 .auth_password_function = ssh_auth_password_cb};
27
28 ssh_init();
29
30 sshbind = ssh_bind_new();
31
32 if (ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_BINDADDR, hostaddr) < 0 ||
33 ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_BINDPORT, &port) < 0 ||
34 ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_HOSTKEY, "ssh_host_rsa_key") < 0 ||
35 ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_LOG_VERBOSITY, &ssh_log_level) < 0)
36 {
37 log_error("Error setting SSH bind options: %s\n", ssh_get_error(sshbind));
38 return -1;
39 }
40
41 if (ssh_bind_listen(sshbind) < 0)
42 {
43 log_error("Error listening at SSH server port: %s\n", ssh_get_error(sshbind));
44 return -1;
45 }
46
47 while (1)
48 {
49 session = ssh_new();
50
51 if (ssh_bind_accept(sshbind, session) != SSH_OK)
52 {
53 log_error("Error accept SSH connection: %s\n", ssh_get_error(sshbind));
54 }
55
56 ssh_callbacks_init(&cb);
57 if (ssh_set_server_callbacks(session, &cb) != SSH_OK)
58 {
59 log_error("Error set SSH callback: %s\n", ssh_get_error(sshbind));
60 }
61
62 ssh_set_auth_methods(session, SSH_AUTH_METHOD_PASSWORD);
63
64 if (ssh_handle_key_exchange(session) != SSH_OK)
65 {
66 log_error("Error exchanging SSH keys: %s\n", ssh_get_error(sshbind));
67 ssh_disconnect(session);
68 continue;
69 }
70
71 channel = ssh_channel_new(session);
72 if (channel == NULL || ssh_channel_open_session(channel) != SSH_OK)
73 {
74 log_error("Error opening SSH channel: %s\n", ssh_get_error(sshbind));
75 ssh_channel_free(channel);
76 continue;
77 }
78
79 log_std("Debug: #\n");
80
81 ssh_channel_close(channel);
82 ssh_disconnect(session);
83 ssh_free(session);
84 }
85
86 ssh_bind_free(sshbind);
87 ssh_finalize();
88
89 return 0;
90 }
91
92 int main(int argc, char *argv[])
93 {
94 if (log_begin("../log/bbsd.log", "../log/error.log") < 0)
95 {
96 printf("Open log error\n");
97 return -1;
98 }
99
100 log_std_redirect(STDOUT_FILENO);
101 log_err_redirect(STDERR_FILENO);
102
103 ssh_server("0.0.0.0", 2322);
104
105 log_end();
106
107 return 0;
108 }

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1