Toggle navigation
首页
发现
Ask
User
登 录
注 册
无缝
服务器
跳板机
连接
如何通过跳板机无缝连接需要跳转的服务器?
发布于 2021-07-23 09:16:34
本机( mac 环境) 与跳板机 A 是通的,A 与 B, C, D ... 是通的,但 本机与 B,C,D 之间是不直通的,请教下,如何通过一些配置或工具,达到 本机全局情况下与 B,C,D 无缝连接(自动通过 A 中转连接)
A, B, C, D.... 均是 linux 服务器
Questioner
eggt
Viewed
22
50
个回答
zwy100e72
2021-07-23 09:22:41
先搭建 本机 - A 的隧道( SSH / VPN 均可)
再通过隧道连接其他机器
Ariver
2021-07-23 09:28:42
一楼正解。
有的跳板机是 windows,烦死了。
lcdtyph
1
2021-07-23 09:33:25
ssh -J jumpserver targetserver
可以写进 .ssh/config
huoshen
2021-07-23 09:34:32
gost 直接端口转发中转
mrxun1998
2021-07-23 09:34:49
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
同问,有没有详细教程~
公司的堡垒机限制太烦了,mac 环境被迫只能先远程 window 桌面,再连接 Linux 服务器
重点是 mac 的 Windows 远程桌面工具( Microsoft Remote Desktop )实在难用,被迫安装了 pd 虚拟机。。
神烦
eggt
2021-07-23 09:39:12
@lcdtyph 这只针对会话吧?我想找个全局都真通的方案
@mrxun1998
jk1030
2021-07-23 09:51:50
我也被搞得很烦 假如 A 是 windows b,c,d 是 lunix 这个时候应该怎么联通
huoshen
2021-07-23 09:52:25
啥叫全局都真通?
shynome
2021-07-23 09:59:52
可以使用 tinc 组网,但前提是你能在 a, b, c, d 机器上安装软件
组网的话以 a 机器为中心,本机和 b, c, d 都连接到 a,连接成功后,本机和 a, b, c, d 都可以互相访问就像在同一个局域网内(记得选一个不冲突的网段
whale
2021-07-23 10:04:10
不直通的意思是 A,B,C,D 是同一个 VPC,就 A 开启了外网访问?
网络环境不清楚,不好给方案。
eggt
2021-07-23 10:05:04
@huoshen 打错了,是直通😂
eggt
2021-07-23 10:05:48
@shynome 如果要在 b,c,d 上都要安装软件,这不被允许
ye4tar
4
2021-07-23 10:08:49
全程不使用额外的工具,完全依赖各个平台已有的工具,如下:
假定本机的 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
mmh?
shynome
2021-07-23 10:11:09
@eggt 那只能在本机写路由转发了,将特定 ip 的访问转发到 a 服务器上,Linux 我知道能做到,Mac 不知道好不好做
PandaRun
2021-07-23 10:14:38
ssh tunnel
ye4tar
2021-07-23 10:16:56
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
.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
了解下 http tunnel,网上有现成的脚本
libook
2021-07-23 10:42:33
本机 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
方法 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
@zwy100e72
@lcdtyph
@huoshen
@mrxun1998
@ye4tar
@ye4tar
@thet
@libook
@cpstar
这些代理,直通的方案,会不会降低系统的安全性?看起来这些方案里,A 机器都是做了数据转发,这样的话 A 就有可能并不知道 B 、C 、D 执行了什么命令,也就无从做审计,这样的话,堡垒机是不是就没有意义了?
libook
2021-07-23 11:15:48
@xylophone21 #23 本来本地机器和 B 、C 、D 之间是隔离的,所以具备一定的安全性,你用任何方式打通了肯定就失去了对应的安全保障。这是个取舍问题。
如果你希望记录本地机对 BCD 的网络调用情况,可以开网络日志进行审计,但你只能审计到网络连接的建立和断开以及对应的端口情况。
如果是想知道具体做了哪些操作,就得做对应的协议的日志记录,比如 Shell 的日志、Web 日志。
如果 A 是堡垒机,那么用本机直接操作 BCD 就是个伪命题,堡垒机的存在就是为了不让你在本机操作 BCD 的,必须登录到堡垒机 A,然后在堡垒机上再连接 BCD 进行操作,堡垒机 A 负责记录你的所有操作,甚至还会有录屏。
安全和便利性是矛盾的,两者只能取其一。
lavanil
2021-07-23 13:23:33
sshuttle -NHr user@B
beginor
2021-07-23 13:34:16
如果 堡垒机 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
真通只有 VPN 拨入啊。其他方案都是端口转发也就是通一个端口。
其实这就是一个 AB 问题,OP 根本没有讲清楚业务需求,直接要一个最全最广的方案,相应的就是安全性或者部署复杂度的牺牲。
xylophone21
2021-07-23 15:27:56
@libook 对,所以我感觉这题是不是讨论偏了?无缝连接是个伪需求,因为要方便,要无缝连接,直接开放端口就好了,之所以不开放就是为了安全,才加堡垒机。如果又在堡垒机上开无缝连接,那么堡垒机就没有价值了。
mringg
2021-07-23 15:34:23
感觉还是老老实实用跳板机,通过打洞的方式访问服务器,跳板机就失去意义了。并且可能会带来新的安全隐患。
Volekingsg
2021-07-23 15:34:26
我是往 A 开了个 SOCKS 代理,外网时自动走这个代理规则连 B, C, D 。
Xusually
2021-07-23 15:38:38
直通的话,跳板机的作用就大打折扣了。
knightdf
2021-07-23 15:50:39
ssh 隧道
no1xsyzy
2021-07-23 16:03:14
那就 ssh A -t ssh [B|C|D] -t 啊(
eggt
2021-07-23 16:07:19
@Volekingsg 我使用 clashx 创建了一个 scoket 代理,好像没用作用
cpstar
2021-07-23 16:31:49
哦,堡垒机啊,那你应当选用具有审计功能的堡垒机。其实你这个 A 根本就不能称之为“堡垒机”,能 SSH 上去,然后再 SSH 到别的地方,审计,审啥啊,靠系统那点日志?得了吧。
再说了,A 能 SSH,你能确保 ssh 到 A 的不打洞?一旦打动,任何所谓的审计措施全都失效。
xiang0818
2021-07-23 16:53:01
上面说了这么多,其实直接用 finalShell 建立隧道就可以了,哈哈哈 https://www.hualigs.cn/image/60fa811834c88.jpg
Rache1
2021-07-23 17:08:49
@liyunyang 我觉得 RDP 还行呀,日常操作还是可以的,之前试过用 VNC 连 MAC mini 那才叫难受 😂
libook
2021-07-23 17:53:15
@xylophone21 #28 堡垒机的价值就是约束管理员只能登录到堡垒机上对受保护资源进行操作,然后堡垒机记录相应的操作供审计。
所以主题里描述的需求是和堡垒机的价值相悖的,要么去除堡垒机 A 然后让 BCD 可以被自由访问,要么老老实实登录到堡垒机 A 上再登录 BCD 进行操作,没有第三种方案。
github2020
2021-07-23 19:19:17
不考虑安全,单纯为了绕过限制、自己方便的话,可以:
mac -> linux 透明代理(搞个 r2s 之类便携的) -> A 上的 ssh 或 socks5 代理-> B/C/D
透明代理可以用 gost/glider 之类
guanyin8cnq12
2021-07-23 19:31:35
从 a 到 c 用 haproxy,代理 tcp 链接。从 a 到 d,经过 c,2 层代理,没搞过。
Volekingsg
2021-07-23 19:42:41
@eggt #34
Volekingsg
2021-07-23 19:45:43
@eggt #34
大概步骤:
1. ssh -fnNT -D 1080 username@ip -p port
2. proxies 下面添加 socks 代理:
proxies:
- name: "name"
type: socks5
server: 127.0.0.1
port: 1080
udp: true
3. 添加策略组和规则
proxy-groups:
- name: local
type: select
proxies:
- name
- DIRECT
rules:
- 'IP-CIDR,192.168.14.14/32,local'
- 'IP-CIDR,192.168.14.16/32,local'
4. 另外 clashx 没有增强模式,需要给 ssh 配置代理,或者使用 clashx pro
Host *
...
Proxycommand nc -X 5 -x 127.0.0.1:7890 %h %p
...
Volekingsg
2021-07-23 20:38:37
@Volekingsg #42 或者连接不上再走代理
Volekingsg
2021-07-23 20:39:01
@Volekingsg #42 或者连接不上再走代理
Match exec "echo %h | grep '192\|124' | grep -q -v '208' && ! timeout 1 nc -z %h %p &> /dev/null"
ProxyCommand nc -X 5 -x 127.0.0.1:7890 %h %p
eggt
2021-07-23 21:16:36
@Volekingsg 感谢老哥,我下周试试
apeople
2021-07-23 21:40:43
@liyunyang 我和你的情况简直一模一样,Microsoft Remote Desktop 经常连不上 mac 上的文件夹。
akira
2021-07-24 00:55:22
跳板机就是让你 从跳板机去访问目标服务器的呀,还是你对跳板机理解有偏差了
yuruizhe
2021-07-24 02:11:43
expect 脚本
jinwyp
2021-07-24 03:17:06
wireguard linux 内核自带 可以用我的脚本安装 wget --no-check-certificate https://raw.githubusercontent.com/jinwyp/one_click_script/master/install_kernel.sh && chmod +x ./install_kernel.sh && ./install_kernel.sh
baoshuo
2021-07-24 09:54:37
我用 Termius 解决这个问题,添加一个 Snippet 到主机的设置就行了
热门帖子
1
难道 Go 就没有好用的工作审批流框架吗
2
跟风贴自家软路由实现
3
Mac 上有什么 pdf 阅读器比较好用?
4
再开一个贴,问界发布新 M5,请各位老哥或者老车主骂醒我
5
我这辈子是不是彻底和 Airpods Pro 无缘了
6
最近对很多事情都没有感觉了
7
微信读书非付费会员有每月导入数量限制了
8
不知道从什么时候,普通 USB-C 双头线不能给 iPhone15 充电了
9
程序员想开发漂亮的个人网站是不是用 react 会比 vue 简单一些?
10
有关于上海居住证 120 积分
热门github
1
Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information
(翻译:论文实现——YOLOv9: Learning What You Want to Learn using Programmable Gradient Information(利用可编程梯度信息学习您想学的内容))
2
A Windows and Office activator using HWID / Ohook / KMS38 / Online KMS activation methods, with a focus on open-source code and fewer antivirus detections.
(翻译:使用 HWID / KMS38 / Online KMS 激活方法激活 Microsoft 产品的脚本集合,重点是开源代码、较少的防病毒检测和用户友好性。)
3
Get up and running with Llama 2, Mistral, Gemma, and other large language models.
(翻译:启动并运行 Llama 2、Mistral、Gemma 和其他大型语言模型。)
4
该项目可以让你通过订阅的方式使用Cloudflare WARP+,自动获取流量。This project enables you to use Cloudflare WARP+ through subscription, automatically acquiring traffic.
5
Multi functional app to find duplicates, empty folders, similar images etc.
(翻译:多功能应用程序可查找重复项、空文件夹、相似图像等。)
6
Xray panel supporting multi-protocol multi-user expire day & traffic & ip limit (Vmess & Vless & Trojan & ShadowSocks & Wireguard)
(翻译:Xray面板支持多协议多用户到期日&流量&IP限制(Vmess & Vless & Trojan & ShadowSocks & Wireguard)
7
The Free Software Media System
(翻译:Jellyfin 是一个免费软件媒体系统,可让您控制管理和流式传输您的媒体。它是专有 Emby 和 Plex 的替代方案,通过多个应用程序从专用服务器向最终用户设备提供媒体。)
8
lightweight, standalone C++ inference engine for Google's Gemma models.
(翻译:适用于 Google Gemma 模型的轻量级独立 C++ 推理引擎。)
9
📚 Freely available programming books
(翻译:📚 免费提供的编程书籍)
10
A collective list of free APIs
(翻译:免费 API 的集合列表)
11
1️⃣🐝🏎️ The One Billion Row Challenge -- A fun exploration of how quickly 1B rows from a text file can be aggregated with Java
(翻译:十亿行挑战 —— 使用 Java 对文本文件中的 10 亿行数据进行聚合的有趣探索)
12
🎓 Path to a free self-taught education in Computer Science!
(翻译:🎓计算机科学免费自学教程!)
13
Curso para aprender el lenguaje de programación Python desde cero y para principiantes. 75 clases, 37 horas en vídeo, código, proyectos y grupo de chat. Fundamentos, frontend, backend, testing, IA...
(翻译:从零开始学习 Python 编程语言的课程,适合初学者)
14
This repository contains System Design resources which are useful while preparing for interviews and learning Distributed Systems
(翻译:该存储库包含系统设计资源,在准备面试和学习分布式系统时非常有用)
15
Mamba is a new state space model architecture showing promising performance on information-dense data such as language modeling, where previous subquadratic models fall short of Transformers. It is based on the line of progress on structured state space models, with an efficient hardware-aware design and implementation in the spirit of FlashAttention.
(翻译:Mamba 是一种新的状态空间模型架构,在信息密集型数据(例如语言建模)上显示出良好的性能,而之前的二次模型在 Transformers 方面存在不足。它基于结构化状态空间模型的进展,并本着FlashAttention的精神进行高效的硬件感知设计和实现。)