ssh端口转发笔记 -- ssh反向代理(隧道)、动态代理、本地代理

软件技术   2024-12-23 05:53   34   0  

缩略词

本机:ssh命令发起方,即运行ssh命令的那台机器。也可简称客户端远程机:ssh命令连接到的服务器,一般指运行ssh服务的那台机器。也可简称服务端本地机群:能直接与本机通迅的主机集合,包含本机自身。远程机群: 能直接与远程机通迅的主机集合,包含远程自身。

动态代理

动态代理一般用于代理服务器,应用场景为:本地机群不能直接访问某些地址/端口,但远程机可以。本机通过建立一个指定本机端口,远程机端口不指定(动态)的连接,让本地机群可以通过该连接去访问那些地址(基于socks4和socks5协议)。

bash
ssh -o ServerAliveInterval=20 -g -Nf -D 6060 proxy@47.44.161.114               #动态代理
参数说明
-o ServerAliveInterval=20代表心跳包,ssh在一段时间没数据后会把连接给断开。
-g允许其他主机连接到本机端口进行转发。 如果无效,要设置**本机*sshd_config文件:*gatewayports yes
-N不执行远程命令。 仅做端口转发(仅适用于协议版本2)。
-f将ssh切换到后台
-D 6060指定以本机哪个端口做为转发端口
proxy@47.44.161.114以指定帐号连接远程机

反向代理

反向代理一般用于内网穿透,应用场景为:本机在防火墙内,并且防火墙未向外开放本机(或本地网络内其他主机)端口,远程机有向外开放的可用端口,本机通过建立一个指定本机(或本地网络内其他主机)端口和远程机端口的连接(也可以理解成端口映射),让外部应用可以通过远程机端口访问本机(或本地网络内其他主机)端口。

bash
ssh -o ServerAliveInterval=20 -g -Nf -R 5001:localhost:6060 proxy@47.44.161.114   #反向代理
参数说明
-o ServerAliveInterval=20代表心跳包,ssh在一段时间没数据后会把连接给断开。
-g允许其远程机群连接到远程机端口进行转发。 如果无效,要修改**远程机*sshd_config文件:*gatewayports yes
-N不执行远程命令。 仅做端口转发(仅适用于协议版本2)。
-f将ssh切换到后台
-R 15001:localhost:6060反向转发,用值用**:**分隔为三项,格式为: <远程机端口>:<本地机群>:<端口>。
proxy@47.44.161.114以指定帐号连接远程机

本地代理

本地代理应用场景一般是两类:一类是应用限制只能访问本机端口,而实际需要访问远程机端口;一类是某个网络环境只能允许一台主机访问远程机端口,而实际是网络区域内多台主机都有这个要求。

bash
ssh -o ServerAliveInterval=20 -g -Nf  -L 5001:localhost:6060 proxy@47.44.161.114
参数说明
-o ServerAliveInterval=20代表心跳包,ssh在一段时间没数据后会把连接给断开。
-g允许本地机群连接到本机端口进行转发。 如果无效,要修改**本机*sshd_config文件:*gatewayports yes
-N不执行远程命令。 仅做端口转发(仅适用于协议版本2)。
-f将ssh切换到后台
-L 15001:localhost:6060本地转发,用值用**:分隔为三项,格式为: <本机端口>:<远程机群>:<端口>。 示例里第二项localhost,代表的是远程机**,用这种写法一般代表远程主机也只能本机访问该端口
proxy@47.44.161.114以指定帐号连接远程机

连接检测脚本

ssh建立的连接有时候会因为网络原因断开,所以写了个定时任务脚本(基于centos)

bash

#!/bin/sh
### reconnectproxy.sh ###
cd ~
pid=` ps aux|grep ssh|grep -E "6060[[:space:]]+proxy@47.44.161.114"|awk '{print $2}'`


dt=`date`
if [ -n "$pid" ]
then

echo ${dt}"    INFO:proxy is connected">>~/chkconn.log

else

echo ${dt}"    WARN:proxy is not connected">>~/chkconn.log
echo ${dt}"    WARN:try to reconnect proxy ">>~/chkconn.log
ssh -o ServerAliveInterval=20  -g -Nf -D 6060 proxy@47.44.161.114
fi

再用crontab -e命令将脚本加入任务计划中

bash
1 */5 * * * * sh /root/reconnectproxy.sh

文章转载:https://www.cnblogs.com/xinggg/p/8043227.html


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。