Linux 设置 ssh 内网穿透

**背景:**有三台机器A、B、C,机器 A 位于某局域网内,能够连接到互联网。机器 B 有公网 IP,能被 A 访问到。机器 C 位于另外一个局域网内,能够连接到互联网,能够访问 B。

**目标:**以 B 为中介,让 C 能够直接通过 ssh 连接到 A。

实现方法:使用 SSH 构建内网穿透隧道

  1. 修改机器 B 的 /etc/ssh/sshd_config,设置 GatewayPorts yes

  2. 在机器A的 ~/.ssh/authorized_keys 中添加机器 B 和机器 C 的公钥。如果希望机器 A 能够无密码访问机器 B,可以将机器 A 的公钥添加到机器 B 的 ~/.ssh/authorized_keys 中,否则不要添加,不添加则在A上使用 ssh -NR 建立隧道时需要输入机器 B 的密码。

  3. 在机器 A 上使用如下命令建立隧道:

bash 复制代码
ssh -NR [X1]:[X2]:[X3] [X4]@[X5]


X1:机器B用于构建隧道的端口

X2:机器A的localhost,可以写为 0.0.0.0

X3:机器A的端口,表示希望机器C经过隧道访问到的A的端口,对于ssh连接,使用22端口

X4:机器B用于构建隧道的用户的用户名

X5:机器B的ip
  1. 使用机器 C 连接机器 A:
bash 复制代码
ssh -p [X1] [X6]:[X5]


X6:希望登录到机器 C 的用户名,注意该用户不是机器 B 上的用户,而是机器 C 上的用户

注意事项:

需要检查防火墙是否开放对应端口

相关推荐
byte轻骑兵39 分钟前
【BlueZ 】蓝牙 SDAP 协议入门:BlueZ 中设备服务发现的基础逻辑
linux·人工智能·bluez·电脑蓝牙·嵌入式蓝牙
mounter6251 小时前
GCCRS 突破与 Rust 入核:Linux 工具链的重大变革
linux·开发语言·rust·linux kernel·kernel
怪侠_岭南一只猿1 小时前
[简单理解]小龙虾是怎么一回事?
运维·服务器·ai
海兰1 小时前
【应用】Wastnet 框架的 SSE (Server-Sent Events)从协议原理到实践指南
运维·服务器·人工智能
2401_894915532 小时前
Geo 优化源码部署实战:环境配置、参数调优完整指南
运维·服务器·数据库·tcp/ip·安全
lxw20230271163 小时前
k8s安装部署(利用ansible)
linux·kubernetes·ansible
爱和冰阔落3 小时前
【Linux】Ctrl+C 到底做了什么?从键盘、kill 到 alarm,一次讲清信号的产生
linux·运维·c++·安卓
JavaPub-rodert4 小时前
Linux 下部署 MongoDB:从安装、配置到生产环境使用
linux·运维·mongodb
我不会插花弄玉4 小时前
11.Linux进程信号【由浅入深-Linux】
linux·进程·信号
辻弋2014 小时前
一键优化电源计划、游戏模式、独显强制、禁用后台录制——DeltaForceBooster专治三角洲行动卡顿掉帧,所有改动可一键还原
服务器·数据库·windows·游戏·电脑·php