AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 726972
Accepted
MrE
MrE
Asked: 2015-10-06 23:32:10 +0800 CST2015-10-06 23:32:10 +0800 CST 2015-10-06 23:32:10 +0800 CST

通过 ssh 的 netcat / 命名管道代理

  • 772

我习惯于使用 ssh 在 localhost 上转发远程服务端口,例如:

ssh -L 2181:localhost:2182 user@server (将远程主机端口2182转发到本地端口2181)

现在,从我 ssh 到的机器上,我正在尝试访问 tcp 服务并将响应转发到我的本地机器:

local-machine:2181 <-- SSH --> remote-machine:2182 <-- netcat/named pipe --> service:2181

注意:我没有直接访问服务机器的权限,我只能通过我 SSH 连接的机器访问网络。

我试图将 netcat 与命名管道一起使用:

在远程机器上:

mkfifo fifo
nc -k -l 2182 <fifo | nc service 2181 >fifo

在本地机器上: echo message | nc localhost 2181

但这似乎不起作用。

我也试过,在远程机器上 nc -k -l 2182 0<fifo | nc service 2181 1>fifo

没有运气

在远程机器上nc -k -l 2182输出我从本地机器发送的消息:2181

如果我只是像这样简单地管道:nc -k -l 2182 | nc service 2181 我确实看到了远程机器上服务的响应。所以我可以一直到服务并回到远程机器,但它停在那里:

local-machine:2181 <-/- SSH --> remote-machine:2182 <-- netcat --> service:2181

所以我不明白为什么命名管道不会通过 ssh 连接将响应转发回我的本地机器。

echo message | nc localhost 2182在远程机器上不会在本地机器上输出任何内容,因此由于某种原因它没有通过 SSH 实现。

知道为什么会这样以及如何解决吗?

感谢帮助。

(为清楚起见进行了编辑)注意:我需要这个,因为我只能通过 SSH 连接到一台机器,它是集群的一部分,并且该机器可以访问服务。我不想将服务暴露给外部,也不想每个服务容器都有一个 SSHD。

ssh
  • 2 2 个回答
  • 5581 Views

2 个回答

  • Voted
  1. Best Answer
    MrE
    2015-10-07T11:19:24+08:002015-10-07T11:19:24+08:00

    我被指出这样一个事实,一个人可以简单地做

    ssh -L 2181:service:2181 user@remote-machine

    将连接转发到servicefromremote-machine上的端口local-machine。

    简单高效。

    • 1
  2. Hugo
    2016-05-27T00:45:58+08:002016-05-27T00:45:58+08:00

    你可以使用 -R 来达到这个目的:

    ssh -R 8080:127.0.0.1:7070 yourhost
    

    这将在 yourhost:7070 上打开一个端口,该端口转发到 localhost:8080

    文档说

    [-R [bind_address:]port:host:hostport]
    
    • 0

相关问题

  • 如何最好地设置 ssh 隧道以访问远程网络 (Linux)

  • SSH 和重定向

  • 通过 SSH 会话使用 NET USER 命令拒绝访问

  • SSH 服务器零日漏洞利用 - 保护自己的建议

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve