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 上的用户

注意事项:

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

相关推荐
大树886 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠6 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush46 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
开发者联盟league6 小时前
安装pnpm
ssh
载数而行5206 小时前
Linux 11 动态监控指令top
linux
小宇宙Zz7 小时前
Maven依赖冲突
java·服务器·maven
不会C语言的男孩8 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
古城小栈8 小时前
Unix 与 Linux 异同小叙
linux·服务器·unix
程序猿阿伟9 小时前
《Chrome离线扩展安装的底层逻辑与场景落地指南》
服务器·网络·chrome
凡人叶枫9 小时前
Effective C++ 条款42:了解 typename 的双重意义
java·linux·服务器·c++