- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个用 C (libssh) 编写的简单 SSH 客户端,我需要用 Java (jsch) 重写客户端。这是 C 代码:
#include <libssh/libssh.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
char TEST[] = "HELLO WORLD!";
int main(){
ssh_session my_ssh_session;
int rc;
int port = 22;
int verbosity = SSH_LOG_NOLOG;
char *password, *user;
ssh_channel channel;
my_ssh_session = ssh_new();
if(my_ssh_session == NULL)
exit(-1);
ssh_options_set(my_ssh_session, SSH_OPTIONS_HOST, "192.168.1.1");
ssh_options_set(my_ssh_session, SSH_OPTIONS_PORT, &port);
ssh_options_set(my_ssh_session, SSH_OPTIONS_LOG_VERBOSITY, &verbosity);
rc = ssh_connect(my_ssh_session);
if(rc != SSH_OK){
fprintf(stderr, "Error: %s\n", ssh_get_error(my_ssh_session));
ssh_free(my_ssh_session);
exit(-1);
}
user = "user";
password = "pass";
rc = ssh_userauth_password(my_ssh_session, user, password);
if(rc != SSH_AUTH_SUCCESS){
fprintf(stderr, "Error authenticating with password: %s\n",
ssh_get_error(my_ssh_session));
ssh_disconnect(my_ssh_session);
ssh_free(my_ssh_session);
exit(-1);
}
channel = ssh_channel_new(my_ssh_session);
if(channel == NULL)
return SSH_ERROR;
rc = ssh_channel_open_session(channel);
if(rc != SSH_OK){
ssh_channel_free(channel);
return rc;
}
ssh_channel_write(channel, TEST, sizeof(TEST)); // This line need to be implemeneted in Java using JSCH librarary.
ssh_channel_send_eof(channel);
ssh_channel_close(channel);
ssh_channel_free(channel);
ssh_disconnect(my_ssh_session);
ssh_free(my_ssh_session);
}
我已经弄清楚了Java中的客户端身份验证。客户端可以创建 session 和 channel ,但我无法像 C 中那样将数据写入 SSH channel 。我尝试在 channel 上使用 getOutputStream() 并将数据写入流,但服务器没有收到任何数据。我还尝试了 openChannel(String type ) 方法的不同设置(sheel、direct-tcpi 等...)。 这是Java代码:
JSch jsch=new JSch();
Session session=jsch.getSession(user, host, port);
session.setPassword(password);
localUserInfo lui=new localUserInfo();
session.setUserInfo(lui);
session.connect();
Channel channel = (Channel)session.openChannel("session" );
channel.connect();
OutputStream out = channel.getOutputStream();
out.write(buffer);
您知道如何使用 jsch 在 Java 中编写类似的功能吗?来自 libssh 的 ssh_channel_write(channel, TEST, sizeof(TEST))
?
谢谢
最佳答案
数据很可能被添加到缓冲区,但从未被刷新到客户端。
尝试使用 PrintWriter,或简单地刷新流。
out.write("abc");
out.flush();
或
PrintWriter writer = new PrintWriter(channel.getOutputStream(), true);
writer.println("abc");
关于java - C libssh 中的 SSH 客户端用 Java jsch 重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51736073/
我试图将我的程序与 libssh 静态库链接。 以下是我从 libssh 教程中复制的简单代码: //sshtest.c #define LIBSSH_STATIC 1 #include #incl
我想知道在使用 ARM 的 Sourcery 工具链进行交叉编译时是否可以将我的应用程序链接到 libssh。我的主机系统是Ubuntu x86_64 :~/c/ssh$ arm-none-linux
我想知道在使用 ARM 的 Sourcery 工具链进行交叉编译时是否可以将我的应用程序链接到 libssh。我的主机系统是 Ubuntu x86_64 :~/c/ssh$ arm-none-linu
我正在使用 libssh。 调用ssh_channel_write后,我必须知道是否有数据要读取。 ( 但我不想检索数据。 ) 如果没有数据要读取(例如10s后),我会调用ssh_channel_wr
我正在使用 libssh 向计算机发送远程命令。该命令是实时的,因此我试图在生成数据时获取数据。基本上,我正在对鼠标事件进行十六进制转储,并且我想要该数据。如何从我的命令中返回实时结果? #inclu
已阅读相关内容docs和 tutorials并找到了similar问题,我仍然无法继续。如果这是一个常见问题,我提前表示歉意。我进行了搜索,但我不太确定我在寻找什么...... 我正在 Debian
我不知道为什么我的 libssh 程序无法连接到本地主机,但它对远程主机运行良好。 ssh_session my_ssh_session = ssh_new(); ssh_options_set(my
我正在尝试编写一个简单的程序(玩具示例),将文件从远程主机复制到本地计算机。 当我尝试复制一个 txt 文件时它有效,但不适用于 mp4 等文件。 这是我的代码,基本上是教程中的部分拼接而成:http
我正在尝试将一个库包含到我的代码 (libssh) 中,但没有任何效果...在这一点上,我不确定该怎么做,因为搜索引擎中没有针对我收到的错误弹出任何结果。 我在这里下载了 libssh: https:
我正在尝试一个非常简单的 libssh 实现,但 valgrind 显示内存泄漏。 代码是: #include #include #include #include #include int
我正在尝试在我的应用程序中使用 libssh,但我不断收到内存泄漏。我正在尝试的最简单的代码是: #include #define SSH_NO_CPP_EXCEPTIONS assert(0 ==
我的 SSH 服务器使用双重身份验证。我不知道它是如何实现的。但最初它要求输入密码,然后再次要求输入另一个密码才能登录到与通常控制不同的单独控制台。 我的代码与文档中显示的示例代码类似, #inclu
我按照教程尝试使用 libssh 打开和验证 SSH 连接,但在 ssh_connect 之后,无论我尝试密码验证、公钥验证还是不验证,应用程序都会崩溃并出现核心转储。 t@1 (l@1)
问题:让一个使用 libssh 库的简单程序成功编译而不会出现链接器错误。 程序: #include #define LIBSSH_STATIC 1 #include #include void
即使我可以在我的服务器上使用各种方法进行身份验证,使用 libssh 库,也没有检测到任何身份验证方法。这是一个代码示例: #include #include int main(int,ch
我正在使用 libssh 库并尝试创建一个新的 SFTP session 。我不断收到错误消息 ssh_packet_unimplemented: Received SSH_MSG_UNIMPLEME
在 ssh cli 中,我可以: ssh root@localhost -t aria2c https://github.com/JetBrains/intellij-community/archiv
我试图使用 libssh 0.7.0 将 SSH 通信包含到我的程序中。我按照教程创建了到远程计算机的简单连接,但遇到了这个错误: [2016/10/26 16:38:56.280261, 1] ss
我正在我的应用程序中为 xen VM 实现 VNC 连接。为了连接,我必须转发端口,因为 XenServer 只接受本地连接。我是这样做的: ssh -L 5903:localhost:5903 ro
我已经按照说明安装了 libssh,尽管一切似乎都正常,但我的编译器仍然在“#include”行中返回错误“找不到文件”。我猜它与目录或链接有关(我在下载它的同一个文件夹中有“make install
我是一名优秀的程序员,十分优秀!