利用SSH进行动态转发


ssh 是一种加密通讯的网络协议,常用来在两台机器间做远程登录,假设有一台服务器,想通过服务器代理本地的网络请求。可以在本地和服务器之间创建隧道进行动态转发。

ssh动态转发有比较多成熟的软件,比如mac系统下的Core Tunnel,win系统下的Proxifier。如果不想安装软件只使用命令也可以很简单的创建隧道

ssh -D 1080 -Nf root@IP 

这条命令的意思是,在本地开一个端口1080 ,同时在你的PC和服务器之间建立隧道。这个端口支持 sock 5 协议。

可以使用curl 命令测试下代理是否成功

curl --socks 5 127.0.0.1:1080 http://需要访问的网站

每次输入命令的话非常麻烦,可以把命令加入到bash_profile

#Proxy
alias proxy_on="ssh -D 1080 -Nf root@IP"

这样每次执行proxy_on就可以方便的启用代理了

还可以把命令放到函数内,这样可以增加更多的逻辑,例如:

function proxy_on() {
  ssh -D 1080 -Nf root@IP
  curl --socks5-hostname 127.0.0.1:1080 https://www.google.com
  echo -e "\n"
  echo -e "\033[32m已开启代理\033[0m"
}

function proxy_off() {
  pid=$(ps -ef | grep ssh | grep -v grep | awk '{print $2}')
  if ps -p $pid >/dev/null; then
    echo "$pid is running"
    kill -9 $pid
    echo -e "\033[32m已关闭代理\033[0m"
  else
    echo -e "\033[32m代理未启用\033[0m"
  fi
}

声明:初心|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 利用SSH进行动态转发


愿你勿忘初心,并从一而终