ssh隧道代理

前言

我的Linux临时需要访问墙外的资源,折腾clash,v2rayA,无解,最终尝试用ssh隧道,结果成功

前提,需要有个vps在国外,且开启了sshd,并能登陆到该vps

命令

1
ssh -N -D 127.0.0.1:7891 root@vps -p 22
1
2
3
4
5
-N,只做隧道,不执行命令,可以极大的降低风险
-D,隧道
127.0.0.1:7891 127,本地地址,7891,本地代理的端口
root@vps //root用户名,vps,vps的IP,或者域名
-p //默认22,如果是其他的,输入你其他的端口

我使用的edge,使用插件链接的,并未使用系统代理
https://microsoftedge.microsoft.com/addons/detail/proxy-switchyomega/fdbloeknjpnloaggplaobopplkdhnikc

ssh隧道采用的是socks5协议


Options
1.png

添加节点
2.png

选择节点,就能通过连接的ssh来访问需要的内容
3.png


ssh端口转发,参考自SSH 远程端口映射

1
ssh -C -f -N -g -R 100:127.0.0.1:200 root@ip
1
# 将要登陆的ssh服务器上的100端口转发到本地200端口,直接访问本地200端口相当于访问服务器的100端口

应用举例

将发往本机的80端口访问转发到192.168.1.1的8080端口

1
ssh -C -f -N -g -L 80:192.168.1.1:8080  user@192.168.1.1

将发往192.168.1.1的8080访问转发到本机的80端口

1
ssh -C -f -N -g -R 80:192.168.1.1:8080 user@192.168.1.1
1
2
(user为主机192.168.1.1上的用户)
-N – 不使用Shell窗口,纯做转发的时候用,如果你在映射完成后继续在服务器上输入命令,去掉这个参数即可

例子A:我们想远程管理服务器上的MySQL,那么使用下面命令

1
ssh -L 3306:127.0.0.1:3306   user@emlog-vps    -N  

运行这个命令之后,ssh将会自动将服务器的3306映射到本机的3306端口,我们就可以使用任意MySQL客户端连接 localhost:3306即可访问到服务器上的MySQL了。

例子B:一次同时映射多个端口

1
ssh -L 8888:www.host.com:80 -L 110:mail.host.com:110 -L    25:mail.host.com:25 user@host -N 

命令将自动把服务器的80,110,25端口分别映射到本机的8888,110和25端口

注:以上命令在ubuntu 9.10 上测试通过…