gpt4 book ai didi

linux - 如何在代理服务器上反向访问

转载 作者:太空宇宙 更新时间:2023-11-04 09:47:25 24 4
gpt4 key购买 nike

我希望避免直接访问系统A。但是,系统A上运行着一个服务C。

还有一个任何人都可以访问的系统B。

我想以用户认为服务 C 正在 B 上运行的方式“转发”来自 B 的请求到 A。

从技术上讲,我知道如何实现两个网络程序(D 和 E)来实现此要求。D 在系统 A 上运行,连接到在系统 B 上运行的 E。

B 对服务 C 的任何请求都将从 E 转发到 D。D 将请求传递给“真实”服务 C。当然,响应的顺序也是相反的。

Network Access Anyone -> B <- A
Programs E <- D

Service flow Anyone -> E -> D -> C

致还在我身边的人:

在执行此类程序时,我会重新发明轮子吗?

换句话说,是否已经有开源/Linux 程序在执行此功能?

最佳答案

这看起来像是 SSH 隧道的教科书用例。

在服务器 A 上,安装 SSH 服务器(例如,如果是 Debian,则安装包 openssh-server)。在服务器 B 上,运行此命令:

ssh -f SERVICEUSER@AHOST -L BPORT:AHOST:APORT -N

其中 SERVICEUSER 是服务运行的用户名,A 是 A 的主机名或 IP,BPORT 是服务在服务器 B 上可用的端口号,APORT 是服务可用的端口号该服务正在服务器 A 上监听。这里有更多信息:http://www.revsys.com/writings/quicktips/ssh-tunnel.html

每次重启后你都必须运行这个命令,所以最好为它写一个初始化脚本,这样它就可以像服务一样被管理。从这里开始:http://www.thegeekstuff.com/2012/03/lsbinit-script/

为了避免必须输入 SERVICEUSER 的密码,这在初始化脚本中是不可能的,您还需要在服务器 B 上生成一个 SSH 私钥并将其添加到 SERVICEUSER 的 authorized_keys 文件中,这可能涉及为服务用户。使用 usermod -d 命令来执行此操作:http://linux.die.net/man/8/usermod然后关注http://www.eng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.html要记住的一个常见错误是 authorized_keys 文件和 .ssh 目录都必须被 chmod 编辑为 600 并归 SERVICEUSER 所有,否则 SSH 服务器将忽略它们。

关于linux - 如何在代理服务器上反向访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14802664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com