admin11 (ID: 46)
等级:新手上路
积分:7
发帖:1 篇
来自:保密
注册:2023/11/24 17:42:27
造访:2023/11/24 17:42:27
发帖:1 篇
来自:保密
注册:2023/11/24 17:42:27
造访:2023/11/24 17:42:27
[ 第 1 楼 ]
回复
需求举例:将局域网中本地的 22、80、3389 等端口发布到公网的 27、80、3389,以便用户访问网站和自己远程管理服务器
前置条件:本地有一台 Linux 系统,公网有一台 Linux 服务器。
原理是使用 while 循环保证服务可用性。流程如下:
1、登录 ssh 服务器,执行 netstat -pant |grep 0.0.0.0:27 ,检查服务端是不是已经有一个 0.0.0.0:27 的侦听了(因为本次连接需要占用服务端 27 端口)。
2、执行完后,如果退出代码($?)不为0,说明可能网络不通,或着其他错误非正常退出来了,那么等待 30 秒后进入下一次循环(重试)
3、使用“LISTEN ”分割 $check,尝试获取进程信息的 \d+/sshd 部分内容
4、尝试从进程信息中取出 进程 pid
5、如果真取到了进程信息,说明 0.0.0.0:27 已经被侦听了,需要结束掉才能重新映射到 27,于是再次登录 ssh 并执行 kill $pid
6、登录 ssh 并将本地 22 端口映射到服务端 0.0.0.0:27。如果连接异常断开了,等待 30 秒后会继续重试,保证服务可用。
注意:使用此脚本前需要先使用 ssh-copy-id 传递本机公钥到服务器上,否则脚本运行过程中会需要手工输密码,导致服务无法继续。
前置条件:本地有一台 Linux 系统,公网有一台 Linux 服务器。
原理是使用 while 循环保证服务可用性。流程如下:
1、登录 ssh 服务器,执行 netstat -pant |grep 0.0.0.0:27 ,检查服务端是不是已经有一个 0.0.0.0:27 的侦听了(因为本次连接需要占用服务端 27 端口)。
2、执行完后,如果退出代码($?)不为0,说明可能网络不通,或着其他错误非正常退出来了,那么等待 30 秒后进入下一次循环(重试)
3、使用“LISTEN ”分割 $check,尝试获取进程信息的 \d+/sshd 部分内容
4、尝试从进程信息中取出 进程 pid
5、如果真取到了进程信息,说明 0.0.0.0:27 已经被侦听了,需要结束掉才能重新映射到 27,于是再次登录 ssh 并执行 kill $pid
6、登录 ssh 并将本地 22 端口映射到服务端 0.0.0.0:27。如果连接异常断开了,等待 30 秒后会继续重试,保证服务可用。
注意:使用此脚本前需要先使用 ssh-copy-id 传递本机公钥到服务器上,否则脚本运行过程中会需要手工输密码,导致服务无法继续。
2023/11/24 17:44:11
IP:已设置保密