当前位置: 首页 > news >正文

【工具】使用ssh进行socket5代理

文章目录

    • shell
    • ssh命令详解
      • 正向代理:
      • 反向代理:
      • 本地 socks5 代理

shell

ssh -D 3333  root@192.168.0.11
#输入密码
#3333端口已经使用远程机进行转发

设置Windows全局代理转发

socks=127.0.0.1
3333

在这里插入图片描述
如果远程机为公网ip,可通过搜索引擎查询出网ip查看ip是否变化

ssh命令详解

SSH 命令的三种代理功能(-L/-R/-D)
ssh 命令除了登陆外还有三种代理功能:

  1. 正向代理(-L):相当于 iptable 的 port forwarding
  2. 反向代理(-R):相当于 frp 或者 ngrok
  3. socks5 代理(-D):相当于 ss/ssr
    如要长期高效的服务,应使用对应的专用软件。如没法安装软件,比如当你处在限制环境下想要访问下某个不可达到的目标,或者某个临时需求,那么 ssh 就是你的兜底方案。

正向代理:

所谓“正向代理”就是在本地启动端口,把本地端口数据转发到远端。

  • 用法1:远程端口映射到其他机器

HostB 上启动一个 PortB 端口,映射到 HostC:PortC 上,在 HostB 上运行:

HostB$ ssh -L 0.0.0.0:PortB:HostC:PortC user@HostC

这时访问 HostB:PortB 相当于访问 HostC:PortC(和 iptable 的 port-forwarding 类似)。

  • 用法2:本地端口通过跳板映射到其他机器

HostA 上启动一个 PortA 端口,通过 HostB 转发到 HostC:PortC上,在 HostA 上运行:

HostA$ ssh -L 0.0.0.0:PortA:HostC:PortC  user@HostB

这时访问 HostA:PortA 相当于访问 HostC:PortC。

两种用法的区别是,第一种用法本地到跳板机 HostB 的数据是明文的,而第二种用法一般本地就是 HostA,访问本地的 PortA,数据被 ssh 加密传输给 HostB 又转发给 HostC:PortC。

反向代理:

所谓“反向代理”就是让远端启动端口,把远端端口数据转发到本地。

HostA 将自己可以访问的 HostB:PortB 暴露给外网服务器 HostC:PortC,在 HostA 上运行:

HostA$ ssh -R HostC:PortC:HostB:PortB  user@HostC

那么链接 HostC:PortC 就相当于链接 HostB:PortB。使用时需修改 HostC 的 /etc/ssh/sshd_config,添加:

GatewayPorts yes

相当于内网穿透,比如 HostA 和 HostB 是同一个内网下的两台可以互相访问的机器,HostC是外网跳板机,HostC不能访问 HostA,但是 HostA 可以访问 HostC。

那么通过在内网 HostA 上运行 ssh -R 告诉 HostC,创建 PortC 端口监听,把该端口所有数据转发给我(HostA),我会再转发给同一个内网下的 HostB:PortB。

同内网下的 HostA/HostB 也可以是同一台机器,换句话说就是内网 HostA 把自己可以访问的端口暴露给了外网 HostC。

本地 socks5 代理

在 HostA 的本地 1080 端口启动一个 socks5 服务,通过本地 socks5 代理的数据会通过 ssh 链接先发送给 HostB,再从 HostB 转发送给远程主机:

HostA$ ssh -D localhost:1080  HostB

那么在 HostA 上面,浏览器配置 socks5 代理为 127.0.0.1:1080,看网页时就能把数据通过 HostB 代理出去,类似 ss/ssr 版本,只不过用 ssh 来实现。
使用优化
为了更好用一点,ssh 后面还可以加上:-CqTnN 参数,比如:

$ ssh -CqTnN -L 0.0.0.0:PortA:HostC:PortC  user@HostB

其中 -C 为压缩数据,-q 安静模式,-T 禁止远程分配终端,-n 关闭标准输入,-N 不执行远程命令。此外视需要还可以增加 -f 参数,把 ssh 放到后台运行。

这些 ssh 代理没有短线重连功能,链接断了命令就退出了,所以需要些脚本监控重启,或者使用 autossh 之类的工具保持链接。

参考:https://www.cnblogs.com/cangqinglang/p/12732661.html

http://www.lryc.cn/news/284841.html

相关文章:

  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第六节(类型转换)
  • 计算机服务器中了mallox勒索病毒怎么办,mallox勒索病毒解密数据恢复
  • CPU相关专业名词介绍
  • VRRP协议负载分担
  • maven 基本知识/1.17
  • 【Java】HttpServlet类简单方法和请求显示
  • 使用Rancher管理Kubernetes集群
  • QT中操作word文档
  • 纯前端在线Office文档安全预览之打开Word文档后禁止打印、禁止另存为、禁止复制
  • 李沐深度学习-d2lzh_pytorch模块实现
  • 什么是OSPF?为什么需要OSPF?OSPF基础概念
  • Java多线程并发篇----第二十六篇
  • list下
  • 【Linux】进程间通信——system V 共享内存、消息队列、信号量
  • 网络卡问题排查手段
  • 20240119-子数组最小值之和
  • c# 释放所有嵌入资源, 到某个本地文件夹
  • Unity SnapScrollRect 滚动 匹配 列表 整页
  • 网络命令ping和telnet
  • ros2学习笔记-CLI工具,记录命令对应操作。
  • 自然语言处理的发展
  • flink operator 拉取阿里云私有镜像(其他私有类似)
  • C语言算法赛——蓝桥杯(省赛试题)
  • 【文本到上下文 #2】:NLP 的数据预处理步骤
  • Minio文件分片上传实现
  • C语言总结十一:自定义类型:结构体、枚举、联合(共用体)
  • 解决Spring Boot应用打包后文件访问问题
  • 循环神经网络的变体模型-LSTM、GRU
  • 视频图像的color range简介
  • tcp的三次握手