Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类似PuTTy的Java SSH客户端_Java_Ssh - Fatal编程技术网

类似PuTTy的Java SSH客户端

类似PuTTy的Java SSH客户端,java,ssh,Java,Ssh,所以,我想创建我自己的SSH客户端,不仅仅是发送命令,而是一个完整的SSH客户端供我使用,就像使用PuTTy或mobaxterm一样,这里有人能给我指出正确的方向吗 我尝试/想到的事情: -使用Jsch发送和执行命令(如果可能的话,我想知道这是否可以在不使用Jsch的情况下完成)。SSH是一种定义为在TCP之上运行的协议,您可以使用java.net.Socket类在java中建立TCP连接 所以,是的,这是可以做到的 你必须自己实施协议(或者使用JSch来实现,但考虑到所有这些工具都已经存在,而

所以,我想创建我自己的SSH客户端,不仅仅是发送命令,而是一个完整的SSH客户端供我使用,就像使用PuTTy或mobaxterm一样,这里有人能给我指出正确的方向吗

我尝试/想到的事情:
-使用Jsch发送和执行命令(如果可能的话,我想知道这是否可以在不使用Jsch的情况下完成)。

SSH是一种定义为在TCP之上运行的协议,您可以使用
java.net.Socket
类在java中建立TCP连接

所以,是的,这是可以做到的

你必须自己实施协议(或者使用JSch来实现,但考虑到所有这些工具都已经存在,而且它是安全的,一般来说,依赖广泛使用的工具比依赖手写的东西要智能好几个数量级,因为安全漏洞很难测试——我想这是一种纯粹顽固的傲慢行为,或者更可能是一种错误学习练习,这意味着您不想在这里使用jsch)

ssh的工作原理是通过网络发送任意数量的加密流。默认情况下,有一个流(双向流),一端是用户的shell(例如,
/bin/bash
可执行文件),另一端是终端(您键入的内容构成输入,任何输出都回显到终端窗口)

ssh不等待您键入命令,然后运行它;这是执行此操作的
/bin/bash
。这是基本的linux信息,与ssh(协议)没有直接关系,这正是您习惯的,因为sshd(构成ssh服务器的linux可执行文件)默认情况下,将终端挂接到目标服务器的shell可执行文件上。通常是bash

考虑到你对此一无所知,这听起来像是一个项目,作为一个初始实验有点牵强,但我将根据不完整的信息进行评估

首先,我要制作一个简单的telnet客户端和服务器。telnet现在已经非常过时了,但它基本上是ssh,没有流的多路复用和加密。如果你不能编写telnet客户端,你也不能编写ssh客户端。为了测试的目的,你仍然可以在linux机器上启动telnet服务器

一旦你搞定了,就开始计算密码和多路复用*

*)使用ssh,您可以在打开shell的同时,也可以进行端口转发等操作;查看标准ssh中的
-R
-L
-D
选项。每个这样的选项都允许发送另一个流。(当您发送shell命令并查看其结果时,同时,通过相同的ssh连接,您正在向另一台机器网络中的打印机发送打印作业)。通过单个连接发送多个流称为“多路复用”,它是ssh规范的一部分