如何通过跳板机无缝连接需要跳转的服务器?

2021-07-23 09:16:34 +08:00
 eggt
本机( mac 环境) 与跳板机 A 是通的,A 与 B, C, D ... 是通的,但 本机与 B,C,D 之间是不直通的,请教下,如何通过一些配置或工具,达到 本机全局情况下与 B,C,D 无缝连接(自动通过 A 中转连接)

A, B, C, D.... 均是 linux 服务器
8442 次点击
所在节点    程序员
51 条回复
libook
2021-07-23 10:42:33 +08:00
本机 SSH 到 A,然后在 A 的 Shell 环境下直接 SSH 到 B 、C 、D 就可以。。。

要是希望非 SSH 协议连到 B 、C 、D,可以在 A 上做几个映射到 B 、C 、D 上相应端口的转发规则,本地直接连接 A 上的对应端口就会自动被 A 转发到 B 、C 、D 上的特定端口上。这个可以去搜一搜 iptables 或者 SSH 隧道。

VPN 能让你的本机和 A 、B 、C 、D 在一个网络里,这样是最方便的,不用配置特定端口。
cpstar
2021-07-23 10:53:38 +08:00
方法 1,SSH Tunnel,通过 A 的 ssh 建立 tunnel 到 B 、C 、D
方法 2,端口映射,A 上开(比如 60022 、60122 、60222 之类)端口映射 B 、C 、D 的 22 。

方法 1 安全一些,毕竟只暴露 A 的 22,B\C\D 的 22 不直接暴露,但是就是每次建立的时候,费点劲;
方法 2 省事一些,直接连接连接

方法 1,用 ssh 命令实现;方法 2 在 A 上用 iptables 或者 firewall-cmd 实现。两者都需要打开 port-forwarding,具体找文章。
xylophone21
2021-07-23 11:09:09 +08:00
@zwy100e72
@lcdtyph
@huoshen
@mrxun1998
@ye4tar
@ye4tar
@thet
@libook
@cpstar

这些代理,直通的方案,会不会降低系统的安全性?看起来这些方案里,A 机器都是做了数据转发,这样的话 A 就有可能并不知道 B 、C 、D 执行了什么命令,也就无从做审计,这样的话,堡垒机是不是就没有意义了?
libook
2021-07-23 11:15:48 +08:00
@xylophone21 #23 本来本地机器和 B 、C 、D 之间是隔离的,所以具备一定的安全性,你用任何方式打通了肯定就失去了对应的安全保障。这是个取舍问题。

如果你希望记录本地机对 BCD 的网络调用情况,可以开网络日志进行审计,但你只能审计到网络连接的建立和断开以及对应的端口情况。

如果是想知道具体做了哪些操作,就得做对应的协议的日志记录,比如 Shell 的日志、Web 日志。

如果 A 是堡垒机,那么用本机直接操作 BCD 就是个伪命题,堡垒机的存在就是为了不让你在本机操作 BCD 的,必须登录到堡垒机 A,然后在堡垒机上再连接 BCD 进行操作,堡垒机 A 负责记录你的所有操作,甚至还会有录屏。

安全和便利性是矛盾的,两者只能取其一。
lavanil
2021-07-23 13:23:33 +08:00
sshuttle -NHr user@B
beginor
2021-07-23 13:34:16 +08:00
如果 堡垒机 a 能 ssh 转发的话可以这样,ssh 本地端口转发 `ssh -TNL 127.0.0.1:2022:server-b:22 user@a` 然后再 `ssh
-p 2022 user@127.0.0.1`, 就是登录 b 了, 不用安装任何第三方软件
xuboying
2021-07-23 13:40:05 +08:00
真通只有 VPN 拨入啊。其他方案都是端口转发也就是通一个端口。
其实这就是一个 AB 问题,OP 根本没有讲清楚业务需求,直接要一个最全最广的方案,相应的就是安全性或者部署复杂度的牺牲。
xylophone21
2021-07-23 15:27:56 +08:00
@libook 对,所以我感觉这题是不是讨论偏了?无缝连接是个伪需求,因为要方便,要无缝连接,直接开放端口就好了,之所以不开放就是为了安全,才加堡垒机。如果又在堡垒机上开无缝连接,那么堡垒机就没有价值了。
mringg
2021-07-23 15:34:23 +08:00
感觉还是老老实实用跳板机,通过打洞的方式访问服务器,跳板机就失去意义了。并且可能会带来新的安全隐患。
Volekingsg
2021-07-23 15:34:26 +08:00
我是往 A 开了个 SOCKS 代理,外网时自动走这个代理规则连 B, C, D 。
Xusually
2021-07-23 15:38:38 +08:00
直通的话,跳板机的作用就大打折扣了。
knightdf
2021-07-23 15:50:39 +08:00
ssh 隧道
no1xsyzy
2021-07-23 16:03:14 +08:00
那就 ssh A -t ssh [B|C|D] -t 啊(
eggt
2021-07-23 16:07:19 +08:00
@Volekingsg 我使用 clashx 创建了一个 scoket 代理,好像没用作用
cpstar
2021-07-23 16:31:49 +08:00
哦,堡垒机啊,那你应当选用具有审计功能的堡垒机。其实你这个 A 根本就不能称之为“堡垒机”,能 SSH 上去,然后再 SSH 到别的地方,审计,审啥啊,靠系统那点日志?得了吧。
再说了,A 能 SSH,你能确保 ssh 到 A 的不打洞?一旦打动,任何所谓的审计措施全都失效。
xiang0818
2021-07-23 16:53:01 +08:00
上面说了这么多,其实直接用 finalShell 建立隧道就可以了,哈哈哈 https://www.hualigs.cn/image/60fa811834c88.jpg
Rache1
2021-07-23 17:08:49 +08:00
@liyunyang 我觉得 RDP 还行呀,日常操作还是可以的,之前试过用 VNC 连 MAC mini 那才叫难受 😂
libook
2021-07-23 17:53:15 +08:00
@xylophone21 #28 堡垒机的价值就是约束管理员只能登录到堡垒机上对受保护资源进行操作,然后堡垒机记录相应的操作供审计。
所以主题里描述的需求是和堡垒机的价值相悖的,要么去除堡垒机 A 然后让 BCD 可以被自由访问,要么老老实实登录到堡垒机 A 上再登录 BCD 进行操作,没有第三种方案。
github2020
2021-07-23 19:19:17 +08:00
不考虑安全,单纯为了绕过限制、自己方便的话,可以:
mac -> linux 透明代理(搞个 r2s 之类便携的) -> A 上的 ssh 或 socks5 代理-> B/C/D
透明代理可以用 gost/glider 之类
guanyin8cnq12
2021-07-23 19:31:35 +08:00
从 a 到 c 用 haproxy,代理 tcp 链接。从 a 到 d,经过 c,2 层代理,没搞过。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/791209

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX