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

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 服务器
7664 次点击
所在节点    程序员
51 条回复
zwy100e72
2021-07-23 09:22:41 +08:00
先搭建 本机 - A 的隧道( SSH / VPN 均可)
再通过隧道连接其他机器
Ariver
2021-07-23 09:28:42 +08:00
一楼正解。
有的跳板机是 windows,烦死了。
lcdtyph
2021-07-23 09:33:25 +08:00
ssh -J jumpserver targetserver

可以写进 .ssh/config
huoshen
2021-07-23 09:34:32 +08:00
gost 直接端口转发中转
mrxun1998
2021-07-23 09:34:49 +08:00
ssh -t -t B_user@B_ip -p 22 -o ProxyCommand='ssh -t -t A_user@A_ip -p 22 -W %h:%p''
两边都配置成密钥登录的话一条命令就能通过 A 登录 B 了
liyunyang
2021-07-23 09:35:36 +08:00
同问,有没有详细教程~
公司的堡垒机限制太烦了,mac 环境被迫只能先远程 window 桌面,再连接 Linux 服务器
重点是 mac 的 Windows 远程桌面工具( Microsoft Remote Desktop )实在难用,被迫安装了 pd 虚拟机。。
神烦
eggt
2021-07-23 09:39:12 +08:00
@lcdtyph 这只针对会话吧?我想找个全局都真通的方案
@mrxun1998
jk1030
2021-07-23 09:51:50 +08:00
我也被搞得很烦 假如 A 是 windows b,c,d 是 lunix 这个时候应该怎么联通
huoshen
2021-07-23 09:52:25 +08:00
啥叫全局都真通?
shynome
2021-07-23 09:59:52 +08:00
可以使用 tinc 组网,但前提是你能在 a, b, c, d 机器上安装软件
组网的话以 a 机器为中心,本机和 b, c, d 都连接到 a,连接成功后,本机和 a, b, c, d 都可以互相访问就像在同一个局域网内(记得选一个不冲突的网段
whale
2021-07-23 10:04:10 +08:00
不直通的意思是 A,B,C,D 是同一个 VPC,就 A 开启了外网访问?
网络环境不清楚,不好给方案。
eggt
2021-07-23 10:05:04 +08:00
@huoshen 打错了,是直通😂
eggt
2021-07-23 10:05:48 +08:00
@shynome 如果要在 b,c,d 上都要安装软件,这不被允许
LLaMA2
2021-07-23 10:08:49 +08:00
全程不使用额外的工具,完全依赖各个平台已有的工具,如下:
假定本机的 ip 是 192.168.1.1,跳板机 windows (代号 A )是 192.168.2.1,生产机( BCD )是 192.168.3.1 、192.168.3.2 、192.168.3.3

先在 A 上使用 Windows 命令行配置端口映射如下
netsh interface portproxy add v4tov4 listenport=40022 connectport=22 connectaddress=192.168.3.1
netsh interface portproxy add v4tov4 listenport=50022 connectport=22 connectaddress=192.168.3.2
netsh interface portproxy add v4tov4 listenport=60022 connectport=22 connectaddress=192.168.3.3

然后本机想要连接 B 机器就是 ssh root@192.168.2.1 -p 40022
然后本机想要连接 C 机器就是 ssh root@192.168.2.1 -p 50022
然后本机想要连接 D 机器就是 ssh root@192.168.2.1 -p 60022
yuanzi0
2021-07-23 10:09:11 +08:00
mmh?
shynome
2021-07-23 10:11:09 +08:00
@eggt 那只能在本机写路由转发了,将特定 ip 的访问转发到 a 服务器上,Linux 我知道能做到,Mac 不知道好不好做
PandaRun
2021-07-23 10:14:38 +08:00
ssh tunnel
LLaMA2
2021-07-23 10:16:56 +08:00
linux 上端口转发
# 将 A 机 40022 端口的流量转发至 B 机器 192.168.3.1 的 22 端口
firewall-cmd --permanent --add-forward-port=port=40022:proto=tcp:toaddr=192.168.3.1:toport=22

注意
开启防火墙伪装:firewall-cmd --add-masquerade --permanent //开启后才能转发端口
其他问题请搜索 firewalld 端口转发
thet
2021-07-23 10:24:02 +08:00
.ssh/config 里面配置
host jump
user xxxx
hostname xxx.xxx.xxx.xxx
port xxxx
identityfile jumpserver.pem

host server-a
user xxxx
hostname xxx.xxx.xxx.xxx
proxyjump jump
identityfile jump.pem

配置好后,用 ssh server-a 就可以直接登录了,可以搜一下 ssh proxyjump 用法
dynastysea
2021-07-23 10:32:13 +08:00
了解下 http tunnel,网上有现成的脚本

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

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

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

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

© 2021 V2EX