SSH隧道技术

远程转发(Remote Port Forwarding)

#!/bin/bash
# 远程转发(Remote Port Forwarding)是指在远程主机上开启一个监听端口,
# 将流量转发到本地主机的某个指定端口,以达到通过 SSH 连接访问本地主机上服务的目的。
# 通俗来讲,远程转发就是将远程主机的请求通过 SSH 隧道转发到本地计算机上进行处理。

read -p "请输入远程主机IP地址:" proxy_ip # 192.168.3.7
read -p "请输入远程主机服务端口:" proxy_port # 8080
read -p "请输入本地服务端口:" forward_port # 7777
local_ip=0.0.0.0
ssh_command="ssh -N -R ${proxy_ip}:${proxy_port}:${local_ip}:${forward_port} -o ServerAliveInterval=15 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -p 22 root@${proxy_ip}"

echo "正在建立反向SSH隧道, 登录 curl ${proxy_ip}:${proxy_port} ===> http://${local_ip}:${forward_port} 隧道转发到本地计算机上进行处理"
eval ${ssh_command}


afasdf

本地转发(Local Port Forwarding)

#!/bin/bash
# 本地转发(Local Port Forwarding)是指在本地主机(即客户端主机)上开启一个本地端口监听,
# 将流量转发到远程主机(即服务器主机)的某个指定端口,
# 以达到通过 SSH 连接访问远程主机上服务的目的。通俗来讲,
# 本地转发就是将本地计算机的请求通过 SSH 隧道转发到远程主机上进行处理。
read -p "请输入代理IP地址:" proxy_ip # 192.168.3.7
read -p "请输入代理端口:" proxy_port # 8080
read -p "请输入转发端口:" forward_port # 7777

ssh_command="ssh -N -L 127.0.0.1:${forward_port}:${proxy_ip}:${proxy_port} -o ServerAliveInterval=15 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -p 22 root@${proxy_ip}"

echo "正在建立SSH隧道, http://127.0.0.1:${forward_port} ====> ${proxy_ip}:${proxy_port} 隧道转发到远程主机上进行处理"

eval ${ssh_command}