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

linux - sshpass和ssh实现端口转发时命令怎么写?

凌征
2023-10-27

sshpass ssh直接登录服务器是可以的。
但是改成ssh端口转发就不行了。
我的命令如下

sshpass -p 密码 ssh -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -N -f -R 13306:192.168.0.30:3306 ubuntu@ip

我打印了日志

debug3: send packet: type 80debug3: receive packet: type 4debug1: Remote: Forwarding listen address "localhost" overridden by server GatewayPortsdebug3: receive packet: type 81debug1: remote forward success for: listen 13306, connect 192.168.0.30:3306debug1: forwarding_success: all expected forwarding replies receiveddebug1: forking to background~ # debug3: send packet: type 1Killed by signal 1.

共有1个答案

轩辕庆
2023-10-27

要使用 sshpassssh 来实现端口转发,你可以使用以下命令语法:

sshpass -p '密码' ssh -L 本地端口:目标主机:目标端口 用户名@目标主机

以下是命令参数的解释:

  • sshpass:这是一个工具,用于提供密码给 ssh,以便自动登录而不需要手动输入密码。
  • -p '密码':用于指定密码,你需要将 '密码' 替换为你实际的密码。
  • ssh:用于建立 SSH 连接。
  • -L:表示本地端口转发。
  • 本地端口:是你要绑定的本地端口号,可以是你选择的任何未被占用的端口号。
  • 目标主机:是你想要连接到的远程主机的主机名或IP地址。
  • 目标端口:是远程主机上你想要访问的服务的端口号。
  • 用户名:是你在远程主机上的用户名,用于登录。

通过执行上述命令,你将在本地主机上创建一个监听指定本地端口的 SSH 通道,所有传入该端口的流量都将被转发到目标主机的指定端口上。这通常用于建立安全的隧道,以便在本地主机和远程主机之间传输数据或访问远程服务。请确保你已经安装了 sshpass 工具,或者可以使用其他方式实现无密码登录(如SSH密钥对)来提高安全性。

 类似资料:
  • 本文向大家介绍SSH端口转发实现内网穿透的实现,包括了SSH端口转发实现内网穿透的实现的使用技巧和注意事项,需要的朋友参考一下 我们局域网的机器能够访问外网,但是外网不能访问内网。因为内网访问互联网时候能确定外网的地址,外网却不能确定我们局域网内的具体地址。(ip地址有限)如果 我们在访问外网的时候,这个链接让他保持、不断,那么这个链接就相当于我们建了一条路,内网数据能出去,外网数据能进来,ssh

  • 但是现在要通过Java的JSch库来完成,怎么做呢?第一次尝试了portforwarding,但在终端上我没有这样做(没有在中设置参数)。 然后我遇到了一个问题,如何使用JSCH SSH到另一个SSH服务器后面的服务器?,但我不明白如何创建tcp隧道!

  • 问题内容: 我有这两个容器,例如(CentOs)和。我想拥有的是,可以从容器中连接到mongo数据库,就像它在本地运行一样, 无论如何,据我所知,您可以像这样将端口localhost:27017映射到mongo:27017 但是,如果执行此操作,则必须提供root密码,然后它会将我登录到容器中,并且不会发生端口转发 背景:我想这样做是因为我正在运行一个Java程序,该程序连接到localhost上

  • 我希望能够远程连接到公开了JMX的Java服务,但它被防火墙阻止了。我尝试使用ssh本地端口转发,但是连接失败了。查看wireshark,当您试图与jconsole连接时,它似乎希望在连接到端口9999后通过一些短暂的端口进行连接,这些端口被防火墙阻止。 有没有什么方法可以让jconsole只通过9999连接或者使用代理?这篇文章还是最好的解决方案吗?或者,我是不是漏掉了什么?

  • 问题内容: 我已经构建了一个打开ServerSocket的简单应用程序,并在连接时将其自身连接到远程计算机上的另一个服务器套接字。为了实现端口转发,我使用了两个线程,一个线程从本地输入流读取并向远程套接字输出流读取流,反之亦然。 该实现感觉有点差劲,所以我问您是否知道更好的实现策略,或者是否有一些代码可以以高效的方式实现。 PS:我知道我可以在Linux上使用IPTables,但是必须在Windo

  • 问题内容: 我希望能够远程连接到公开了JMX的Java服务,但是该服务已被防火墙阻止。我尝试使用ssh本地端口转发,但是连接失败。看一下wireshark,看来当您尝试与jconsole连接时,它想在连接到受防火墙阻止的端口9999后通过一些临时端口进行连接。 有什么方法可以使jconsole仅通过9999连接或使用代理?是这篇文章仍然是最好的解决办法?还是我错过了什么? 问题答案: 有什么方法可