公司做百度推广需要切换不同省市的网络查看推广展示效果,为了简化推广专员的切换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
扩展思考:
为了仅给推专员使用,避免其它部门使用,是不是能够设置一个密码。
本文《使用linux ssh命令在公司内网搭一个自动维护的socks5》由爱思考吧 isres.com 分享,转载请注明出处。本文网址:https://www.isres.com/peizhi/196.html
本站主要收集测评能够节省时间和提升效率的软件工具并分享使用与学习的过程和感受,任何情况下用户都需遵守所使用软件资源的相关协议。与《使用linux ssh命令在公司内网搭一个自动维护的socks5》有关的本站文章及资源仅供个人学习交流使用,相关资源请下载后24小时内删除,请勿用于其它用途,因此产生的任何问题由您自行承担。