使用SSH端口转发,将局域网内主机端口转发到公网服务器上


更新 2022年4月9日

周末邻居装修导致我家突然断电了,服务器断电关机,之前家里NAS和阿里云服务器上搭了几条SSH隧道,使用autossh -R port:host:port host2 -Nf这种方式,后台运行的隧道多了就有点乱,正好借着这次服务器关机,把之前的隧道整理一下,统一写入客户端ssh的config配置文件中,以后链接到同一台服务器上的多条隧道就可以执行像这样的一条语句autossh host-tunnel -Nf,比之前简洁不少。

整理前

# nextcloud
autossh -R 23408:localhost:3002 publishhost -Nf

# nginx
autossh -R 23409:localhost:80 publishhost -Nf

整理后

~/.ssh/config文件中添加

# ~/.ssh/config
Host s2-tunnel
  Hostname 47.104.128.157
  User yy
  RemoteForward 23408 localhost:3002
  RemoteForward 23409 localhost:80

命令行运行

# 开启隧道
autossh s2-tunnel -Nf

转发的概念

动态代理

ssh -D 2121 shop -N

远程转发

# SSH 远程端口转发
ssh -R 23409:localhost:4003 -Nf publishhost
ssh -R 23408:localhost:3002 publishhost -Nf

# 使用 AutoSSH 监控 SSH 远程端口转发
autossh -R 23408:localhost:3002 publishhost -Nf
autossh -R 23409:localhost:80 publishhost -Nf

本地转发

  1. 路由器通过端口映射到局域网ssh端口
  2. 局域网主机启动sshd服务
  3. nextcloud设置本地端口访问
  4. 服务器ssh本地端口转发,通过局域网sshd连接nextcloud端口 a. 例:publishhost主机23408端口转发到s2服务器3002端口 i. ssh -L 23408:localhost:3002 s2 -Nf

使用 AutoSSH 自动重连

AutoSSH 是一种用以对 SSH 登录进行安全地自动化的软件。

参考


发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注