Skip to content

SSH 隧道实现端口映射

丹摩当前支持 访问控制端口映射 发布服务外,还可以通过自定义 SSH 安全隧道的方式来发布服务。

SSH 隧道的优势

  • 传输更安全:数据通过 SSH 加密通道传输,无需将服务端口直接暴露到公网,比直接开放端口更安全。
  • 使用方式灵活:支持正向代理和反向代理。正向代理可将实例端口映射到本地,反向代理可将本地服务映射到实例。
  • 转发不限条数:没有转发条数限制,可根据实际需要创建多条端口转发。

🔥 强烈推荐使用 SSH 隧道方式发布服务。

ssh-tunnel-2.png

damodel-ssh-tunnel 图形代理方式

🔥 下载 damodel-ssh-tunnel GUI 客户端。

⚠️ 如果您在使用 Mac 安装软件时遇到 已损坏,无法打开 的提示, 这是因为苹果系统默认只允许安装【App Store】来源的应用,第三方应用通常会有这样的报错。

使用方法

填写 ssh 配置,然后添加转发规则。也可直接登录丹摩,选定实例后配置转发规则。

手动代理方式

正向代理

🔥 把丹摩远端实例内的一个端口映射到本地电脑上的一个端口上,即在本地启动端口,把本地端口数据转发到远端。

ssh-tunnel-3.png

使用方法

使用方法如下:

bash
ssh -p [ssh端口] -CNg -L [本地的端口]:localhost:[实例的端口] root@cn-north-b.ssh.damodel.com

举例说明,如果想把丹摩实例中 50000 端口代理映射到本机的 9001,执行下面命令即可。

bash
ssh -p 37191 -CNg -L 9001:localhost:50000 root@cn-north-b.ssh.damodel.com

测试效果

在本地对端口进行请求。

bash
curl 127.0.0.1:9001

telnet 127.0.0.1 9001

反向代理

🔥 把本地的服务端口映射到丹摩实例内的一个端口上,即在丹摩实例启动端口,把远端端口数据转发到本地。

ssh-tunnel-4.png

⭐️ 场景说明

比如,你在本地电脑起了一个 web 服务,但丹摩实例内部是无法直接访问你的服务,需要你有外网 IP 才可以。这里可以通过 ssh 反向代理的方式,把你本地的 web 服务通过 ssh 隧道映射到丹摩实例内。在丹摩实例内部可以直接 127.0.0.1 地址来请求。

使用方法

使用方法如下:

bash
ssh -p [ssh端口] -CNg -R [本地的端口]:localhost:[实例的端口] root@cn-north-b.ssh.damodel.com

⚠️ 跟上面相比,区别是 -R

举例说明,如果想把本地的 50000 端口代理映射到丹摩实例内的 9001 端口,则执行下面命令。

bash
ssh -p 37191 -CNg -R 9001:localhost:50000 root@cn-north-b.ssh.damodel.com

测试效果

在丹摩实例内,可以执行下面的测试命令,也可以使用对应的客户端做访问测试。

bash
# 判断端口是否存在
lsof -i :9001
netstat -tunalp|grep 9001
ss -an|grep 9001

# 端口连通性探测
curl 127.0.0.1:9001
telnet 127.0.0.1 9001

FAQ

🤔 如何获取实例的 ssh 地址及账号密码。

ssh-tunnel-1.png

bash
ssh -p 37191 root@cn-north-b.ssh.damodel.com

cQweBoss!@#
  • 37191 是该实例 ssh 对外端口。
  • cQweBoss!@# 是该实例的 root 密码。

😅 搞不定 SSH 端口映射

通常 Mac 和 Linux 主机,方便操作 ssh 端口映射,而 windows 需要费点功夫。

联系丹摩技术客服,解决无法映射问题。或者,由技术人员直接在丹摩侧进行临时的公网端口映射。

类似效果:

bash
nc -vz 211.93.18.36 40001