问题标签 [jsch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2825 浏览

java - 使用 JSch 和 GlobalScape 的 SFTP

我正在尝试使用 Java 安全通道 (JSCh) 建立 SFTP 连接。我的软件堆栈是 Red Hat Enterprise Server 5.0、JRE 6.0 和 JSch v0.1.44。主要的服务器软件堆栈(我正在尝试连接)是 Windows Server 2008 和最新版本的 GlobalScape。当试图连接到它时,我得到一个

启用 JSch 日志记录我得到以下相同的连接:

因此,从外观上看,我正在连接到服务器,实际上我可以发送和接收 msg,但是当客户端尝试匹配服务器 msg 提议和客户端 msg 提议时,它会引发异常。

现在将其与使用以前的 GlobalScape 软件和 Windows Server 2003 成功连接到服务器的 JSch 日志进行比较:

所以它再次能够连接并能够交换 SSH_MSG_KEXINIT,但是这里客户端和服务器建议匹配并且没有抛出异常

sftp 安全使用公钥/私钥和用户名/密码。

我可以使用 WinSCP、Filezilla 和 linux 命令行(从 java 应用程序运行的同一台服务器)连接到它。

我与 SFTP 服务器的一位系统管理员交谈,我们尝试使用用户名/密码,我得到了相同的异常和日志。

系统管理员告诉我,两台服务器的区别在于 GlobalScape 版本,现在是 Microsoft 2008 Server。

所以有人对如何解决这个问题有任何想法吗?

提前谢谢了!

0 投票
3 回答
3015 浏览

java - 通过java ssh

我正在使用 java ssh 工具与我的学校帐户建立 ssh 连接并查找文件然后将其删除。但是,我正在创建三个函数来做同样的事情,但使用不同的文件,我正在寻找一种方法来做同样的事情,而不是一个接一个地做。这是一些代码。基本上我想知道是否有一种方法可以在一个 ssh 连接或某种分叉或多线程上完成这一切。

0 投票
2 回答
7554 浏览

ant - Ant 可选任务 SSHExec 和 SCP 的问题。类路径问题?

我正在修改 Ant 脚本(当前在 MyEclipse 中使用)以从命令行工作。我这样做是为了让任何人都可以在没有 MyEclipse 的情况下签出项目并构建它。我遇到的问题是 MyEclipse 包含幕后的依赖项。它通过查看工作区的 Ant 配置并根据首选项对话框中选定的库编译类路径来完成此操作。长话短说,我需要使用这些依赖项并使脚本足够智能,以便在没有 MyEclipse 的帮助下自行包含它们。

让我头疼的任务是 sshexec 和 scp 任务。它们是可选的 ant 任务,需要某个版本的 jsch 才能运行。我从 MyEclipse 的 Ant 类路径中删除了 jsch,并将其添加到项目本身的 lib 文件夹(lib/dev)中。MyEclipse 立即抱怨 SSHExec 类找不到依赖类,com.jcraft.jsch.UserInfo它是 jsch-0.1.44.jar 的一部分。

我看不到从构建脚本中为 Ant 设置类路径的方法。我有以下代码,它path向脚本添加了一个元素,但我认为 Ant 不会使用它,除非明确关联到一个任务或另一个元素。

看来我需要用来taskdef定义 sshexec 和 scp 任务:

MyEclipse 对此抱怨,"taskdef A class needed by class org.apache.tools.ant.taskdefs.optional.ssh.SSHExec cannot be found: com/jcraft/jsch/UserInfo"

它显然在 classpathref,web-jars 中。由于这个格式错误或配置错误的taskdef,我无法在脚本中运行任何东西。

0 投票
1 回答
9047 浏览

java - 有没有办法让 maven scp wagon 在 linux/mac/windows 平台上始终如一地工作?

鉴于关于 scp/ssh 和 maven 的文档非常差,我尝试了不同的方法,基本上分为两大类:使用 scpexe wagon 和 scp wagon。通常它们在 linux 和 mac 上都可以正常工作,但在 windows 上我从来没有找到让它在所有机器上工作的方法。

scpexe 方法(安装完整的腻子并添加到路径后) - settings.xml 配置:

scp 方法 - settings.xml :

我还尝试将 StrictHostKeyChecking 设置为“否”,但是,除了安全风险之外,它在特定机器上不起作用。

是否有人找到了在所有机器上一致地使用内部 ssh 存储库的方法?

0 投票
4 回答
28565 浏览

java - 通过 JSch shell 执行多个命令

我试图使用 JSch 库通过 SSH 协议执行多个命令。但我似乎卡住了,找不到任何解决方案。该setCommand()方法每个会话只能执行单个命令。但我想像 Android 平台上的 connectbot 应用程序一样按顺序执行命令。到目前为止,我的代码是:

该代码似乎已连接到服务器,但我认为输入和输出数组缓冲区存在一些问题,因为根本没有输出。有人可以指导我如何正确处理服务器的输入和输出以获得所需的输出吗?

0 投票
2 回答
11377 浏览

sftp - 如何在使用 JSch 作为 SFTP 客户端时启用被动模式?

我正在使用 JSch 作为 SFTP 客户端,现在由于某些安全限制,我需要启用被动模式。

但我找不到启用被动模式的方法。

有人可以告诉我该怎么做吗?

0 投票
4 回答
14061 浏览

java - 如何让 JSch API 在没有密码的情况下登录到 Unix 服务器?

我正在尝试制作一个 Java 应用程序,它使用JSch API 在远程 Unix 服务器上执行 shell 脚本。

我想知道是否可以在没有密码的情况下登录服务器。如果是这样 - 如何?我是否应该在服务器上生成一对身份验证密钥,然后让应用程序从密钥文件中读取信息?

Java 应用程序位于 Windows 工作站上。

0 投票
2 回答
1874 浏览

java - 测试 JCTerm,java 小程序终端模拟器,在 Eclipse 中工作,但在浏览器中不工作

测试未修改版本的 JCTerm(终端仿真器,可用作小程序;我想使用小程序功能),在 Eclipse 的 AppletViewer 中一切似乎都工作正常,但在网页中测试生成的 jar 文件,所有选项显示一个带有闪烁黄色警告符号的消息框,并且什么也不做。某些选项显示“在此设置之前建立连接”错误。

我有兴趣使用的选项是“文件”菜单中的“打开 SHELL 会话...”。当尝试“打开 SHELL 会话...”选项时,小程序的 Java 控制台会显示这些东西,这似乎是直接相关的。我不知道这意味着什么。

可以在此处找到该程序正常工作的示例,http://wiredx.net/jcterm/

0 投票
1 回答
5915 浏览

ssh - jsch ChannelExec 运行带有 nohup 的 .sh 脚本“丢失”一些命令

我有一个 .sh 脚本,它粘合了许多其他脚本,由 Windows 应用程序中的 jsch ChannelExec 调用。

如果我运行“nohup /foo/bar/foobar.sh >> /path/to/foo.log &”之类的命令,所有长期作业(数据库操作、文件处理等)似乎都会丢失。

检查日志文件,只找到那些回显的东西(长期操作之前和之后,计算运行时间等)。

我检查了权限 $PATH,将源 /etc/profile 添加到我的 .sh 中,但这些都不起作用。

但是当我正常运行命令时(同步运行,将所有回显输出打印到 Windows 上的 java 客户端),一切顺利。

这是一个非常具体的问题。希望有经验的人能帮帮我。

预先感谢。

0 投票
1 回答
4017 浏览

java - 如何在不解压缩的情况下通过 SFTP (Jsch) 编写压缩字节数组?

(这是 X 发布到 Jsch 邮件列表 BTW)。我正在从数据库中读取数据并将其作为 byte[] 携带(用于跨中间件组件的传输)。

从那个字节 [] 我知道如何使用 GZIPOutputStream 类在本地文件系统上创建一个压缩文件。我想做的是使用 JSch SFTP 方法在远程文件系统上创建一个 gzip 压缩文件。

我已经压缩了数据的字节 [],并将其作为 InputStream 传递给 JSch 库,以便 SFTP 到远程文件目录(作为 .gz 文件)。但是,交付的文件具有意外的 EOF,无法“压缩”

gunzip:GlobalIssuer.xml.gz:文件意外结束

提醒我不是传输 .gz 文件内容的 byte[],它是数据库记录的内容

(相对)SSCCE如下:

gzipContent 方法:

以字节为单位的原始内容(“内容”):

压缩后的内容(“内容”)(以字节为单位):

或者:

使用 GZIPOutputStream 和 FileOutputStream 写出到本地文件系统的等效 gzipped 内容。

我想我看到了问题。尽管内容已正确压缩,但我尚未创建压缩文件所需的校验和后缀(如果您在本地文件系统上执行此操作,则 GZIPOutputStream 会与 FileOutputStream 一起执行此操作)。所以基本上我错过了这个:

我在 Jsch 库中看不到可以解决问题的方法 - 这意味着我认为我错过了一些基本点。