当前位置: 首页 > 知识库问答 >
问题:

如何从远程机器访问apache mina ssh服务器?

耿俊
2023-03-14

我创建了一个Amazon Linux 2实例,在其中部署了一个用systemd启动的Java程序。Java程序是一个Vertex shell应用程序,它使用Apache Mina在端口2000上启动SSH服务器。应该可以通过两种方式连接到SSH服务器:公钥或密码验证。

在端口22上进行经典ssh身份验证以访问我的amazon实例后,我可以使用密码auth本地连接到在端口2000上运行的java ssh服务器。然而,当我试图从提供Amazon私钥的本地机器连接到SSH服务器时,连接卡在“debug1:local version string SSH-2.0-OpenSSH_7.5”行上,并在超时2分钟后最终被拒绝:

ssh -i /Users/toto/.ssh/my_amazon_key.pem -p 2000 ec2-user@my-application.server.com -vvv
OpenSSH_7.5p1, LibreSSL 2.5.4
debug1: Reading configuration data /Users/toto/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 52: Applying options for *
debug2: resolving "my-application.server.com" port 2000
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to my-application.server.com [35.XXX.XX.XX] port 2000.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /Users/toto/.ssh/my_amazon_key.pem type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/toto/.ssh/my_amazon_key.pem-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.5
ssh_exchange_identification: Connection closed by remote host

在Java应用程序日志中,我可以看到有人试图连接到SSH服务器,但在2分钟后未能进行身份验证的日志。

当然,我已经在我的亚马逊安全组中检查了我已经打开了2000端口。在我的情况下没有被拒绝的知识产权。

以下是运行SSH服务器的Java代码:

ShellService service = ShellService.create(vertx,
                new ShellServiceOptions()
                        .setTelnetOptions(
                            new TelnetTermOptions().
                                setHost("localhost").
                                setPort(5000))
                        .setSSHOptions(
                            new SSHTermOptions().
                                setHost("0.0.0.0").
                                setPort(2000).
                                setKeyPairOptions(new JksOptions().
                                        setPath("ssh/keystore.jks").
                                        setPassword("wibble")).
                                setAuthOptions(new ShiroAuthOptions().
                                        setConfig(new JsonObject().put("properties_path", "classpath:ssh/auth.properties"))))
        );

知道吗?Vertx/Apache Mina配置?在端口22和端口2000上运行的SSHD之间存在冲突?

共有1个答案

单于皓轩
2023-03-14

好的,我终于发现了问题。实际上,我必须做两件事:

  1. 我将端口从2000改为3000,然后我就不再被卡住了,至少我能够用密码进行身份验证。但公钥认证仍然失败。所以我想在初始端口2000上已经运行了其他东西,导致连接被卡住
 类似资料:
  • 问题内容: 我正在使用JBoss运行客户端/服务器应用程序。 如何连接到服务器JVM的MBeanServer?我想使用MemoryMX MBean来跟踪内存消耗。 我可以使用JNDI查找连接到JBoss MBeanServer,但是java.lang.MemoryMX MBean没有在JBoss MBeanServer中注册。 编辑:要求是从客户端以编程方式访问内存使用情况。 问题答案: 与JBo

  • 我在Unix盒子上安装了ActiveMQ Artemis服务器。我能够创建一个Artemis broker实例,该实例为我提供到运行在上的web控制台的链接。

  • 问题内容: 我正在boot2docker 1.3.1下运行。 我有一个Docker容器通过运行Web服务器。 如果我连接到该容器,则可以使用浏览该网站,以便知道服务器正在运行。 我用以下容器运行容器: 它具有以下详细信息: 我以为可以访问,从托管人访问该网站。 这是行不通的。我只是在Chrome中看到“正在连接…”,却一无所获。 我究竟做错了什么? 问题答案: 好吧,愚蠢的我,我在boot2doc

  • 本文向大家介绍redis服务器允许远程主机访问的方法,包括了redis服务器允许远程主机访问的方法的使用技巧和注意事项,需要的朋友参考一下 若远程主机需要访问redis服务器,可以修改redis.conf配置文件 bind字段默认为: bind 127.0.0.1 这样只能本机访问redis 若允许远程主机访问,可注释掉bind行   或者    将bind 127.0.0.1改为: bind 0

  • 我有一个Maven Spring 4应用程序,我在 http://localhost:9292 的本地 Jetty 服务器上运行。我还有一个在 http://localhost:9990 运行的 JBoss EAP 服务器,我在其上创建了一个 JMS 主题。 但是我不知道如何从我的Spring应用程序中访问JMS元素。 在这篇文章的末尾是JBoss EAP 7配置文件中的一些元素独立.xml(消息

  • 我试图从Laravel项目、DBeaver和Artisan访问我的PostgreSQL数据库。从Laravel project或Artisan()访问它总是会导致: 无法连接到服务器:连接被拒绝 服务器是否在主机“127.0.0.1”上运行,并在端口5432上接受TCP/IP连接 因为我不依赖我的Laradock设置,而且我对Laravel也不太熟悉,所以我确实用默认设置重新下载了Laradock