使用linux ssh命令在公司内网搭一个自动维护的socks5

   

    公司做百度推广需要切换不同省市的网络查看推广展示效果,为了简化推广专员的切换IP操作难度以及减少网管的维护量,决定在内网搭建一套socks5给推广专员使用。

    一方面网管只需要维护一个socks5即可,另一方面推广专员也只需要在浏览器端切换即可。在双方效率上都会有很大的。

    在内网搭建socks5的方法很多,主要平台为windows和linux两种,而外网机器主要是低配的linux vps,如果选用windows平台则需要安装相应的ssh软件,并且软件需要支持构socks5,需要自动重连等。而如果选linux平台,则只需要一个shell脚本即可,所以这次功能选择了linux平台实现。

    实现过程如下:
    1、设置本地服务器与线上服务器的秘钥登录,主要是为了免除密码的使用

    在本机使用ssh-keygen -t rsa命令生成秘钥、并拷贝到相应的服务器,包括本机。

    ssh-copy-id -i ~/.ssh/id_rsa.pub -p33022 test3@182.x.x.x
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@localhost

    2、实现ssh转socks5 

    在本次功能中,还一个个性化需求,linux实现了socks5 A,它将使用自己的socks5 A去实现一个socks5 B,这也是秘钥需要拷贝到本机的一个原因。

    ssh -f -N -D 0.0.0.0:1075 test3@182.x.x.x -p 33022

    ssh -f -N -D 0.0.0.0:1076 -o "ProxyCommand=nc -x 127.0.0.1:1075 %h %p" test4@143.x.x.x -p 66022

    以上命令,实现了内网linux的 1075和1076两个socks5 ,其中1076是通过1075连接到143.x.x.x构建1076的。

    以上命令中,1075和1076为设置监听, -p 33022 或 -p 66022为外网vps的ssh端口,如果是默认的22则不需要指定。

    3、实现自动维护的shell脚本,并加入crontab定时任务中。

    

#!/bin/bash

# 定义要检查的端口和相应的命令
port_commands=( [1075]="ssh -f -N -D 0.0.0.0:1075 test3@182.x.x.x -p 33022" [1076]="ssh -f -N -D 0.0.0.0:1076 -o "ProxyCommand=nc -x 127.0.0.1:1075 %h %p" test4@143.x.x.x -p 66022" )

# 遍历端口和命令的关联数组
for port in "${!port_commands[@]}"; do
  # 检查端口是否在监听
  netstat -an | grep -q ":$port "
  if [ $? -eq 0 ]; then
    echo "端口 $port 在监听"
  else
    echo "端口 $port 未在监听,执行相应命令: ${port_commands[$port]}"
    ${port_commands[$port]}
  fi
done

    4、如果有防火墙

    firewall-cmd --zone=public --permanent --add-port=1075/tcp

    firewall-cmd --zone=public --permanent --add-port=1076/tcp

    firewall-cmd --reload


    扩展思考:

    为了仅给推专员使用,避免其它部门使用,是不是能够设置一个密码。



相关推荐

猜你喜欢

nginx图片不存在时以200状态码返回默认图片

这个场景主要是有些图片可能删除了,会在页面是出现叉叉。 可以通过nginx的404方式,设置返回默认图片,优化用户体验。 location ~ \.(jpg|gif|jpeg|png|txt)$ { ...

基于http-x-forward的nginx并发限制与拦截屏蔽

网站经常被扫描工具,列表爬虫,导致服务器性能开销很大,有些恶意的刷网站,经常导致服务器负载过高。 因为使用了CDN加速,以前基于IP地址的频率限制,拦截,防火墙拦截都无效了。 必须使用基于http-x...

基于文件的php跨机房session同步方案

场景: 公司网站接入CDN, CDN有两个回源后端做负载均衡以及故障转移,经过测试,CDN的回源是按权重比例轮询的。 要解决用户session状态在不同后端回源时不丢失,造成重复登录。 解决方案: s...

mysql运维日常命令大全

学习不仅需要投入时间和成本,更重要的是通过大量实践来达到精通的境界。在日常工作和学习中,我们需要掌握的技能繁多,因此,首先应该掌握常用技能,再选择一个感兴趣的领域进行深入学习,从而在保证时间效益的同时...

使用acme.sh实现服务器ssl证书自动签发续签

使用acme.sh实现服务器ssl证书自动签发续签

工具介绍 acme.sh是一个实现从letsencrypt 自动签发证书,自动更新续签证书的脚本。 大致了解流程之后,使用还是相对简单的。 (1)工具自己生成必要的ssl申请文件,无需干预 (2)设...

让linux的history记录时间 ip 用户等

修改一下,使这个日志能记录 时间 ip 用户等。 vim /etc/profile 追加 USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed...

Stable Diffusion的easynegative插件

Stable Diffusion的easynegative插件

有时候看到很多画图的负向词中会有“easynegative”这个单词,这是一个通用的负面模型,把一些常用的不需要AI画的东西全部集成进来了,除非你的负向词面面俱到,不然这个插件还是很有用的。 这是使...