liux's blog

1433223

  1. 1. 让终端也走代理的方法
  2. 2. 转换socks5代理为http代理

最近手里有一台机器因为安全需要不能连接外网,但是需要从网上下载一些资源,故想到了利用同在校园网的宿舍路由器做个ssh隧道。

百度了下利用ssh开启socks5代理的命令,是

ssh -N -f -D 1080 remote_user@remote_ip

其中,-N参数表示该连接不执行任何指令,仅作端口转发;-f参数表示在后台执行;-D 1080参数表示在本地1080端口开启一个socks5代理,支持socks5代理的应用都可以使用该端口通过socks5代理访问网络。

让终端也走代理的方法

由于该机器是无界面的Ubuntu server系统,需要让终端走之前建立的代理,命令如下:

export ALL_PROXY=socks5://127.0.0.1:1080

执行后只对当前终端有效,关闭终端或重启后就会失效,非常适合这种需要临时上网的需求。如果想要永久生效的话需要将上述命令加入配置文件.bashrc,并执行以下指令以立即生效。

source ~/.bashrc

最终,在.bashrc中加入如下内容使用别名快速建立ssh隧道以及开启终端代理:

alias sshnfd=’ssh -N -f -D 1080 user@remote_ip’
alias setproxy=’export ALL_PROXY=socks5://127.0.0.1:1080’
alias unsetproxy=’unset ALL_PROXY && sshpid’
alias ip=’curl -i http://ip.cn'
alias sshpid=’ps -aux | grep “ssh -N -f -D” | grep -v grep’

转换socks5代理为http代理

由于机器上的wget和apt无法使用socks5代理,故使用privoxy软件将socks5代理转换为http代理。安装privoxy可以直接使用apt-get install,由于校内有个私有地址的源可以直接使用,安装过程比较简单。

安装完成后,编辑privoxy的配置文件,配置文件默认监听了127.0.0.1:8118,默认配置可以不用改动,追加如下一行内容使privixy将请求转发到socks5的监听地址即可:

forward-socks5 / 127.0.0.1:1080 .

随后重启privoxy即可,同时将环境变量ALL_PROXY修改为http://127.0.0.1:8118

若环境变量 ALL_PROXY 对apt无效,可在配置文件/etc/apt/apt.conf(若不存在可新建)中添加一行Acquire::http::Proxy "http://127.0.0.1:8118";来为apt单独设置代理。

本文最后更新于 天前,文中所描述的信息可能已发生改变