本地计算机设置

本地电脑安装ssh服务器openssh-server

安装ssh服务

1
sudo apt-get install openssh-server

开启ssh服务

1
sudo service ssh start

开启端口转发(这个并不是必须的,如果后面失败再选择开启也可以)

1
sudo nano /proc/sys/net/ipv4/ip_forward

把里面的0改为1

路由器设置端口映射

ssh服务的默认端口是22,需要注意可能经过设置被改变了,但是没有处于路由器后面,不需要端口映射,我们需要注意的是如果本地电脑通过路由器连接公网,我们需要在路由器设置端口映射将本地电脑的ssh服务端口映射出去。我们使用的路由器是TP-Link,登录到服务器的管理页面,在应用->虚拟服务器 里面点击添加即可。

测试

这时候可以通过外网的计算机使用ssh通过映射的端口登录到本地计算机。如果连接不上要考虑上面的设置是否正确以及计算机防火墙是否开启端口。

服务器建立ssh隧道并且指定动态转发

1
ssh -D port username@hostname

其中的-D选项指定动态转发,port为本地的监听端口,在链接建立后,我们就拥有了socks5代理:127.0.0.1:port(port就是ssh -D参数指定的端口号).只要在浏览器设置或者其他app设置里面设置这个socks5代理既可以通过ssh上网了。如果远程计算机的ssh服务端口不是22,需要使用-p指定端口号。

git socks5代理设置和取消

设置

1
2
git config --global http.proxy 'socks5://127.0.0.1:port'
git config --global https.proxy 'socks5://127.0.0.1:port'

取消

1
2
git config --global --unset http.proxy 'socks5://127.0.0.1:port'
git config --global --unset https.proxy 'socks5://127.0.0.1:port'

这里的port是上面ssh -D参数指定的port端口号。
然后使用git就可以通过这条ssh代理进行数据传输了。

安装proxychains

如果要让任意的程序都能指定走代理,那么我们需要安装Proxychains,这里因为比如apt-get这样的程序无法使用socks代理,使用proxychains程序可以让它可以使用我们的代理上网。这里我们只能通过git获得源代码来进行安装(前提是上面为git设置了代理)。

1
2
3
4
5
6
7
# 安装
git clone https://github.com/rofl0r/proxychains-ng.git
cd proxychains-ng
./configure --prefix=/usr --sysconfdir=/etc
make
sudo make install
sudo make install-config

然后配置文件

1
sudo nano /etc/proxychains.conf

在最后一行按照上面的examples加入我们的本地ssh代理,其中协议写socks5

1
socks5 127.0.0.1 port

这里的port是上面ssh -D参数指定的port端口号。
然后使用proxychains:
在命令前面加上proxychains4命令即可指定该程序的网络访问走代理了

1
sudo proxychains4 apt-get install program

对于有sudo的命令,proxychains4需要加在sudo的后面
该程序有个很严重的缺陷,对于sh脚本文件,对里面的命令要每个命令程序都加上proxychains4