使用SSH命令在Linux与Mac OS X搭建socket代理上网

对于国内开发者来说,不能访问google.com的确带来很多不便,但如果有一台国外的服务器,并进行VPN搭建,确实流程较为复杂,并且不容易进行过滤。下面使用简单的ssh命令在本地搭建socket代理服务。并使用Chrome插件对需要翻墙的域名进行代理访问。

技术原理

ssh-clinet的大多数用途为远程登录一台Linux服务器,但是ssh的强大功能远不止这些,ssh是与另外一台有sshd服务的主机之间建立一个数据隧道,其中隧道是双向的,可以进行数据双向传输,所以ssh的其他参数,可以提供出来:

  1. 正向隧道 隧道监听本地port,为普通活动提供安全连,即socket代理
ssh -qTfnN -L port:host:hostport -l user remote_ip
  1. 反向隧道 隧道监听远程端口,将内网机器端口暴露到外网访问
ssh -qTfnN -R port:host:hostport -l user remote_ip

使用正向隧道搭建socket5服务

ssh -D 7000 root@202.102.1.1 
//输入密码。。。搞定

但是为了让数据传输更加稳定,不会因为错误退出,以及压缩传输等,需要增加几个参数:

ssh -qTfnN -D 7000 root@202.102.1.1
参数备注解释
-qQuiet mode. Causes most warning and diagnostic messages to be suppressed.安静模式
-TDisable pseudo-tty allocation.不分配tty
-fRequests ssh to go to background just before command execution.后台运行
-nRedirects stdin from /dev/null不输出
-NDo not execute a remote command. This is useful for just forwarding ports不执行远程命令

完整脚本

首先通过生成ssh-keygen -t rsa上传到服务器,以便于不用输入密码登录
完整脚本文件如下:

#!/bin/bash
#监听7000端口
PORT=7000

#不重复运行
if (pgrep -f 'ssh -qTfnN'>/dev/null)
then
    echo "Already running!"
    exit
else
    echo "Starting "
   ssh -qTfnN -D $PORT  root@58.96.1.1  && echo "Done! port on $PORT"
fi

设置浏览器代理

这个步骤是通用的,不同操作系统设置方法不同,以下是mac中的代理服务设置:

Snip20151209_19

chrome里面可以使用SwitchyOmega插件,只对需要的泛域名进行代理

Snip20151209_17

Snip20151209_18

转载于:https://my.oschina.net/mengshuai/blog/541526

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值