问题标签 [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.
java - 我可以将 JSch 配置为在连接失败时自动重新连接吗?
我正在使用JSch API for Java 进行 SFTP 连接。有时服务器可能会关闭一秒钟或连接可能很忙。在这些情况下,在我确定连接失败之前,我至少需要重新连接到服务器三次。
JSch 是否提供任何配置选项来自动执行此操作?
maven - Jsch 和 Maven 有什么问题?
我尝试将 Jsch 0.1.44 与 Maven 一起使用。
我的 pom.xml 中有以下依赖项。
如果我运行mvn compile
maven 看起来很正常,并告诉我 Jsch 已成功下载。
但是在编译时,找不到 Jsch 类。如果我查看我的本地存储库,我可以看到 Jsch-jar 的大小只有 3kb。如果我打开 jar 文件,我还可以看到只有 META-INF 文件夹。
那么这里出了什么问题,我该如何解决这个问题?
java - 浏览 sftp 和 ftp 的目录选项
目前我正在使用 jsch-0.1.44 为 sftp 做功能。我需要为用户添加选项来浏览目录。那么如何从远程服务器获取文件列表。此功能是否存在任何其他开源?请帮我
java - 如何使用 Jsch 在 2 个远程 unix 机器之间执行 scp?
我正在使用 Jsch 编写 Java 代码,其中我需要在 2 个远程 UNIX 框之间执行 scp。
我尝试以与从我的 java 代码执行普通命令相同的方式执行 scp 命令,如下所示:
而不是像我预期的那样提示 user@mademo.org 的密码。我只得到错误:
通过直接在 UNIX 机器上执行命令,我发现了这一点:
scp 要求输入密码以连接到远程计算机。但是使用此代码,它不会提示输入任何密码。所以它试图在没有密码的情况下执行 scp 并尝试三次(NumberoOFAttempts 标志)并给出错误消息......
我想知道如何让 scp 至少提示输入某些内容,而不是不输入密码……我已将 jsch 示例中给出的 MyUserInfo 类的默认实现用于我的代码……
或者
有什么方法可以提供密码以及 scp 命令?我试图尽可能避免使用私钥/公钥组合..
编辑:来自 Paulo 的帖子.. 现在我添加了 channel.setPty(true) 来获取命令的伪终端,它要求我输入密码而不是自动失败..
我现在应该如何指定密码...我尝试在控制台中输入它,但它不接受并继续等待用户输入...我尝试使用 channel.setInputStream(pwdbytes); 设置它 但它一直在等待命令而不接受输入..
感谢您对此的任何帮助...
android - JSch:如何使用 ssh-keys SSH 进入服务器
我想从另一个 ssh 服务器后面 ssh 到一个服务器。网关服务器需要用户名/密码,我可以这样做。我正在使用隧道进入下一个服务器,但这个只需要一个ssh 密钥。我已经通过 PuTTY 生成了密钥,所以它存在于我的用户名中,但我不确定如何为我的 Java 程序检索它。是配置吗?即 setConfig("userauth.publickey", "com.jcraft.jsch.UserAuthPublicKey") 那么我该如何使用这个或其他东西?文档似乎很少,我感谢任何帮助。当我连接此会话时,我尝试过的任何事情都会给我一个错误:“身份验证失败”
谢谢!
我使用的隧道方法是:http: //sourceforge.net/apps/mediawiki/jsch/index.php ?title=ProxySSH所以感谢编写它的人!
对于上下文,我想从我的 Android 手机读/写我学校的服务器。
java - Android 和 JSch:另一个 SSH 服务器后面的 SSH
我正在尝试访问 Android 应用程序中另一台服务器后面的服务器。我可以进入第一台服务器并执行编辑文件和上传/下载等操作。问题是使用 rsa 密钥通过 ssh 进入第二台服务器。问题是,作为在我的电脑上编译的独立程序,一切正常,即我可以访问第二台服务器并在第一台服务器上做我能做的一切。当我尝试将它实现到我的 Android 应用程序中时,我无法进入第二台服务器,只能进入第一台服务器。我得到一个 JSch 错误:我尝试时验证失败,即使我使用的是相同的密钥,而且我确信我正在做我以前在我的电脑上做的事情。这是对Android的限制吗?有解决办法吗?我已经为第一台和第二台服务器使用了端口 22,因为它以前工作过,如果相关的话。
java - 如何在获得异常时再次触发事件?
我有一个使用 JSch 连接到远程 Unix 机器的 java swing 应用程序。
用户需要在 Swing App 中的 JTextBox 中提供 unix 框的 ip,然后单击 App 中的“登录”按钮。
如果连接出现问题,我需要提示用户输入另一个 ip。为此,我捕获 JSchExceptions 并提示用户再次输入有效的 ip.. 然后在用户输入另一个 ip 后,我尝试再次登录..
我的代码工作正常,直到提示用户在收到 JSchException 时再次输入 ip...但我无法再次触发 ActionEvent 以再次启动登录过程...
我button.doClick();
在 LOGIN 按钮上使用了,但事件没有再次触发,因为例外!
在网上看到一些例子后,我也尝试这样做:
还是行不通 !!!
可能是什么问题呢 ?我怎样才能让事件再次触发?
感谢您的任何回复。
java - 进入 SSH 命令的清理/转义参数
我需要做什么才能正确清理/转义正在输入到编程 SSH 命令中的参数?
例如,路径参数 -
它不安全的原因是路径参数可能来自用户上传的文件。从技术上讲,恶意用户可以上传带有无效文件名的文件。虽然我可以事先检查(我正在这样做),但我也想在这里检查。
eclipse - 在 Eclipse 中将 putty 的页面与 egit 一起使用
我正在尝试通过 Eclipse 'egit' 模块访问私有远程 SSH git 存储库。我在 Windows 上运行 Eclipse。Eclipse 似乎无法自动使用 putty 的 pagent 进行授权转发,而且我找不到任何有关自定义 egit 使用的 SSH 的文档(例如,使用 plink.exe)。
我在网上找到了有关设置其他 Windows git 客户端以使用 putty/plink(例如,用于 msysgit)的文档,但我似乎找不到任何关于 Eclipse 的 egit 和 putty(或 eclipse)的信息。
我确信 ssh 密钥可以正常工作,因为我一直使用它来使用 Putty 登录服务器。
具体来说,我使用Git Repository Viewer,点击“Clone Remote Repository”,填写主机、存储库路径、协议(ssh)和用户。我单击“下一步”。我可以说它正在连接,因为我收到了一个带有服务器独特横幅的弹出窗口。然后我得到一个
ssh 登录只能通过 sshkey 进行,所以这就是为什么这不起作用(但至少它表明我已经掌握了基础知识)。
有人在 egit+pageant 上取得成功吗?或者知道它是否不可能?
更新
似乎这不起作用,因为 Eclipse 在内部使用了纯 Java SSH (jsch) 实现,并且 Eclipse 包含的实现不(尚)支持授权代理协议。
已经提出了一些通过 支持平台 ssh 代理的补丁(感谢@Janning 提供的链接)。请参阅此 Eclipse错误 179924。更新 #24 包含有关提议的补丁的令人鼓舞的说明:
我已经确认我可以访问http://github.com/并使用 putty 的选美通过 egit 克隆一些项目。
我不完全确定,但目前的挂断似乎是围绕纯 java unix-domain 套接字库的一些许可问题,以及升级 Eclipse 使用的纯 java SSH 实现。
最近的一个错误(编号 360663)显示所需的 jsch 版本已提交给 Eclipse(据我所知,它应该是下一个版本的一部分——应该是 2012 年 6 月结束)。
android - Jsch 在 Android 上使用 spongycastle 而不是 bouncycastle
我目前有一个 Android 应用程序使用密码通过 ssh 连接到我的路由器。我正在寻求改进这一点,以便我可以使用密钥,但我遇到了真正的问题。据我了解,android 附带的 bouncycastle 版本是一个残缺的版本,因此 ssh 密钥不适用于 jsch。我看过 spongycastle,它声称是一个更完整的实现。下面是与使用 bouncycastle 基本相同的结果,Auth Fail。
jsch 没有大量的日志信息来帮助我找出问题所在。
我想我为此使用了非常标准的代码:
在 OnCreate 中,我删除了原来的 bouncycastle 提供程序
然后我在尝试连接之前添加身份
有没有人成功做到这一点?我是不是忘记了什么?
编辑点附加信息:
正如我在评论中所说,我现在怀疑当我切换密钥并在 sshd 版本 OpenSSH_5.3p1 Debian-3ubuntu7 上进行测试时,甚至没有尝试过密钥
我看不到使用密钥的尝试,而从 pc
我可以看到正在使用的关键方法。下面是我用来测试的代码,不是很漂亮但是很实用。我知道这很可怕,但密码确实包含 authtype == AUTHENTICATION_METHOD_KEY 时要使用的密钥的文件名和路径