SSH 内网穿透

目的

  • 可通过互联网ssh远程连接到局域网内的服务器。

条件

  • 必须要有一台有公网IP的服务器

场景说明

PC NET IP LAN IP
local - 192.168.1.100
server 100.100.100.101 10.10.10.11
  • Local:为本地服务器,局域网服务器,无公网IP,可访问互联网。
  • Server:为云服务器,有固定公网IP(可以是阿里云,腾讯云服务器等,只要有公网IP即可)。

参数说明

-C 允许压缩数据
-f 后台运行
-N 表示只连接远程主机,不打开远程shell
-R 将端口绑定到远程服务器,反向代理
-L 将端口绑定到本地客户端,正向代理
-T 不为这个连接分配TTY
-NT 代表这个SSH连接只用来传数据,不执行远程操作

Local服务器:

ssh -fCNL 2222:localhost:22 SSH_USER@100.100.100.101

Server服务器:

ssh -p 2222 SSH_USER@localhost

Local机器添加crontab定时监控脚本判断进程是否存在:

crontab -e
*/5 * * * * root /usr/bin/bash /opt/ssh_process_checking.sh

脚本如下/opt/ssh_process_checking.sh

#!/bin/bash
#
NUMBER_PROCESS=`/usr/bin/ps -ef | /usr/bin/grep 'ssh.*100.100.100.101' | /usr/bin/grep -vc 'grep'`
if [ ${NUMBER_PROCESS} -eq 0 ];then
  echo "SSHD process error."
  /usr/bin/ssh -ngfNTR 2222:localhost:22 SSH_USER@100.100.100.101
fi
posted @ 2019-12-03 12:47  zongxiang  阅读(425)  评论(0编辑  收藏  举报