端口转发

2023.01.03 分享 332 人浏览 留言

记录下端口转发的代码,用途挺广泛

ssh -R 1234:0.0.0.0:5678 root@ip

转发本地端口5678到服务器端口1234上,以实现外网可以访问本地端口,本地无需静态公网ip

 

另:

默认sshd gateway是关闭的,需要打开后才可以,不然只能对应服务器的本地端口才可以访问

  1. vi /etc/ssh/sshd_config
  2. GatewayPorts yes
  3. systemctl restart sshd.service

ssh很容易因为网络断开,我用openAI写了个判断掉线重连的代码

  1. #!/bin/bash
  2. while truedo
  3.   if curl --max-time 10  --output /dev/null --silent --head --fail "http://ip:5678"; then
  4.     echo "URL is online"
  5.   else
  6.     echo "URL is offline"
  7.     ssh -CqTnN -R 1234:0.0.0.0:5678 root@ip
  8.   fi
  9.   sleep 10   # 等待 10 秒后再次检查
  10. done

或者使用autossh来实现

Mac安装autossh(其他环境自行搜索下载)

  1. brew install autossh

转发命令

  1. autossh -o "StrictHostKeyChecking=false" -M 2222 -NR 1234:0.0.0.0:5678 root@ip

StrictHostKeyChecking=false 连接新主机时不进行公钥确认

-M 在本机2222端口监视 SSH 连接状态

-N 意思是不执行远程命令

-R 意思是将远程主机(外网服务器)启动1234的端口数据转发到本地(内网服务器)的5678端口上

-f 后台运行,kill `pgrep autossh`退出后台

文章地址:https://huilang.me/duan-kou-zhuan-fa/

回复本文

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

icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif