问题标签 [apache-sshd]

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 回答
1378 浏览

java - 如何让 Apache Mina SSHD 客户端在尝试其他任何操作之前等待服务器主机密钥验证完成?

我正在尝试设置一个简单的 SSH 客户端,该客户端使用 Apache Mina SSHD 通过已知主机文件验证服务器的公钥。我在下面拼凑出可行的伪代码 - 好吧,如果我知道如何让客户端等待服务器主机密钥验证完成,它就会起作用。

我希望cf.await()行包含连接和主机密钥验证过程,但它没有,这意味着用户被要求同时验证密码和主机密钥,或者如果代码保持不变,则以某种未定义的顺序。

如何让客户端在尝试其他任何操作(例如用户身份验证)之前等待服务器主机密钥验证完成?另外,如何检查验证是否成功?

0 投票
1 回答
2231 浏览

java - 如何使用 apache mina sshd 执行远程命令

我正在尝试在本地 Windows 机器上运行的 SSHServer 上执行远程命令。

我能够运行像“whoami”这样的简单命令,但无法运行像“java -version”或“dir”这样的命令

到目前为止,这是我的代码,你能告诉我哪里出错了吗?

SSHServer.java

SSHClient.java

测试SSH.java

这是“whoami”的输出:

这是我尝试使用以下命令执行“dir”时的输出:

输出:

0 投票
2 回答
780 浏览

java - Java 运行 SSHD 服务器错误 - 未找到类定义

我目前正在运行 Java Mina SSHD 服务器。我的服务器运行良好,sshd-core-0.14.0但我的病毒扫描程序标记了弱密码,让我别无选择,只能升级到 version 2.5.1。我尝试简单地替换 .jar 文件并将classpathvars 更改为新版本,但出现以下错误。

启动我的基于 java 的 SSHD 的代码在这里:

0 投票
1 回答
522 浏览

echo - Apache MINA SSHD 会话在使用 ProcessShellFactory 时两次回显字符,控制字符不起作用

我在 macOS 10.15.7 上运行 OpenJDK 14。我正在做一些概念验证代码,使用 Apache Mina SSHD 建立一个 SSH 服务器,然后连接到它。这是我所拥有的:

当我开始这个时,我可以ssh -p 1022 test@localhost使用密码foobar并且它可以工作。身份验证成功后,我首先看到的是:

然后在提示符下,我输入的字符(包括换行符)被回显两次而不是一次,导致所有内容都被 dduupplliiccaatteedd:

此外,如果我运行类似 的交互式命令top,它无法识别我的输入,并且控制字符不起作用。ttoopp开始(虽然它的输出是丑陋的和附加的,而不是替换屏幕),但如果我输入q退出(q在这种情况下没有回显两次),top不会退出以响应q. 它只是继续前进。ctrl+c也不起作用 - <code>top 继续运行。退出 top 的唯一方法是终止我的ssh进程或关闭 MINA 服务器。

我觉得我必须在这里做一些非常错误的事情。想法?

0 投票
1 回答
315 浏览

java - 如何将文件写入 Apache SSHD 服务器?

解释:

我正在为我的同事构建一个测试工具。我有几个“模拟”内存后端,他们需要使用它们来运行集成测试。

因此,我需要运行能够上传/下载文件的 SSH 服务器。

基本用例如下:

  • 上传文件,通过 Apache Camel 路由下载文件
  • 上传文件,通过 Apache Camel 路由将文件传输到不同的文件夹,下载文件以验证转换,内容

问题:

我编写了 Apache SSHD 服务器:

服务器实现示例SshServer.java

我试过了:

  • 查找 JavaDoc
  • 在 StackOverflow 上找到类似的问题/解决方案
  • 阅读 GitHub 上的 Apache SSHD 文档

到目前为止我找不到答案。我找到了这篇文章,看起来我也需要 SSH 客户端。我在正确的轨道上吗?

  • 我需要 SSH 客户端将文件写入 SSH 服务器吗?
  • 如何在运行 Apache SSHD 服务器时写入文件?
0 投票
1 回答
224 浏览

kotlin - 如何调试 org.apache.sshd.common.scp.ScpException: Received nack: Can not write to error?

我正在编写一个用于测试具有基本功能的 SSH 连接的工具:连接、上传文件、下载文件。

我的 SftpTestServer 实现:

我的 SftpTestServerTest 实现:

令人惊讶的是,我在网上找不到太多关于我从中得到的错误的信息org.apache.sshd

org.apache.sshd.common.scp.ScpException:收到 nack:无法写入

如何调试此错误?

注意:我使用的是 Mac。不过,这个问题不应该是特定于操作系统的。

0 投票
1 回答
197 浏览

java - 由于 SocketTimeoutException,如何增加 apache SSHD 的 scpClient 的 ChannelOutputStream 的等待超时?

使用 apache SSHD scp 客户端将文件从本地复制到远程时,出现以下错误:

以下是我设置 SSHServer 和 ScpClient 的方式:

如何使用 apache SSHD ScpClient 上传/下载文件

此 SCPClient 在 linux 主机中运行,并且有多个 SSHServer 在 linux 和 windows 主机中运行。

我使用这个 SCPClient 将文件复制到 linux 和 win SSHServers。我正在做的是创建大约 20 个 akka 演员,负责复制到各自的远程主机,这些主机是 win 和 linux 的组合。所以这确实在复制时给本地主机带来了一些压力。

但是,只有在复制到运行 SSHServer 的某些 WIN 服务器时,我才会收到此错误。

我确实注意到复制速度很慢,但我不确定到底是什么问题以及如何解决?

我有一个模糊的想法,它必须对这个参数做一些事情:

https://github.com/apache/mina-sshd/blob/sshd-2.5.0/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelOutputStream.java#L43

但是我不确定在创建客户端时可以在哪里配置它?

任何指针都会有所帮助。

0 投票
0 回答
87 浏览

sshd - SSH 与 Mina-ssh-client 密钥交换下一步?

我编写了一组新的使用 Apache mina-sshd 的方法。这一切都很好,只是我无法连接到某些机器。这些机器使用 LDAP,我认为这可能是问题所在,但我不知道。像我们大多数人一样,我对 SSH 的深度了解不多。

我已经尝试了很多猜测和黑客攻击,但没有改变这种行为,所以如果你们中的任何人对我接下来应该看什么有想法,那将非常有帮助。

在 ClientSession 方面,我们的私钥失败并移动了密码。在服务器端(在这种情况下为 CentOS 7),在我看来,它不喜欢它所看到的,然后就退出了。我预计这里会进行谈判。当我尝试从机器外部或从机器连接到自身时,我得到了这个。我可以从这台机器连接到其他机器。我可以连接到其他使用 LDAP 的机器。

我们面临的问题之一是新旧操作系统的混合。

0 投票
3 回答
763 浏览

java - 使用来自 apache sshd 的 ssh 设置 ssh 密钥以与 jgit 一起使用

我正在使用 jgit 从在 kubernetes 容器中运行的 java 应用程序运行 git 命令,因此我希望允许自定义 ssh 密钥存储位置等。

我的第一种方法是使用 jsch 实现支持 ssh,但遇到了麻烦(我在这里检查了方法Using Keys with JGit to Access a Git Repository Securely并且没有运气)所以我通过 org 添加了 ssh 支持.eclipse.jgit.ssh.apache 工件。由于打包/分发的方式,使用外部 ssh 应用程序并不是一个真正的选择。

我没有太多运气找到信息,但假设我只想模仿 jsch 方法并替换调用中使用的会话工厂。最初我采用的方法是使用所需的 ssh 路径设置会话工厂

并将这个工厂传递给各种命令。

但是,使用这种方法,像 clone 这样的命令将无法通过 git repo 进行身份验证,试图使用默认的 ssh 密钥。在调试器中执行此操作后,我发现在 clone 命令中,它正在生成一个 fetch 命令,但没有将会话工厂或会话传递给它,因此 fetch 只是构建了一个默认配置并且无法进行身份验证。

最终我决定只覆盖默认的会话工厂,这很有效,但不是真的。

这最终工作了一段时间,但随后分崩离析,无法从工厂创建新会话(我不知道为什么,但我不想覆盖默认实例,因此发布这个问题)

所以总而言之:自定义 ssh 会话创建并确保它通过调用其他命令的瓷命令持续存在的正确方法是什么?这是jgit的错误吗?我错过了什么,或者在这里做错了什么?

0 投票
1 回答
148 浏览

java - Apache SSHD 客户端:使用身份文件进行身份验证

我正在尝试使用 MINA SSHD 编写一个 SSH 客户端,连接由 openSSH 生成的身份文件(id_rsa以及相应的公钥id_rsa.pub

文档说要按照这些思路写一些东西:

如何构建方法的参数addPublicKeyIdentity?如何将我的身份文件转换为KeyPair?

非常感谢