test #include #include int main() { // 定义目标服务器的信息 const char *hostname = "your_server_hostname"; const char *username = "your_username"; const char *password = "your_password"; // 初始化SSH会话 ssh_session session = ssh_new(); if (session == NULL) { fprintf(stderr, "Error creating SSH session\n"); return 1; } // 设置SSH连接参数 ssh_options_set(session, SSH_OPTIONS_HOST, hostname); ssh_options_set(session, SSH_OPTIONS_USER, username); // 连接到SSH服务器 int rc = ssh_connect(session); if (rc != SSH_OK) { fprintf(stderr, "Error connecting to SSH server: %s\n", ssh_get_error(session)); ssh_free(session); return 1; } // 使用密码进行身份验证 rc = ssh_userauth_password(session, NULL, password); if (rc != SSH_AUTH_SUCCESS) { fprintf(stderr, "Error authenticating with password: %s\n", ssh_get_error(session)); ssh_disconnect(session); ssh_free(session); return 1; } // 打开通道 ssh_channel channel = ssh_channel_new(session); if (channel == NULL) { fprintf(stderr, "Error creating channel: %s\n", ssh_get_error(session)); ssh_disconnect(session); ssh_free(session); return 1; } // 打开会话 rc = ssh_channel_open_session(channel); if (rc != SSH_OK) { fprintf(stderr, "Error opening channel session: %s\n", ssh_get_error(session)); ssh_channel_free(channel); ssh_disconnect(session); ssh_free(session); return 1; } // 执行交互性命令 rc = ssh_channel_request_pty(channel); if (rc != SSH_OK) { fprintf(stderr, "Error requesting pty: %s\n", ssh_get_error(session)); ssh_channel_free(channel); ssh_disconnect(session); ssh_free(session); return 1; } // 打开 shell rc = ssh_channel_shell(channel); if (rc != SSH_OK) { fprintf(stderr, "Error opening shell: %s\n", ssh_get_error(session)); ssh_channel_free(channel); ssh_disconnect(session); ssh_free(session); return 1; } // 从键盘获取输入并发送到 SSH 服务器 char buffer[256]; while (fgets(buffer, sizeof(buffer), stdin) != NULL) { ssh_channel_write(channel, buffer, strlen(buffer)); } // 关闭 shell 通道 ssh_channel_send_eof(channel); ssh_channel_close(channel); // 释放资源 ssh_channel_free(channel); ssh_disconnect(session); ssh_free(session); return 0; }