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
—— Share every essays ——