内容纲要
linux wiki写得太好了,我就直接复制粘贴过来了,阿里云上记得控制台防火墙开端口

本文中,local-host是自己电脑,my-remote-host是服务器,local-secret只能访问自己电脑,remote-secret只能被my-remote-host访问

本地转发

有时,服务器能访问某个网站,但自己电脑无法访问。这时使用SSH的本地转发功能,就能访问到该网站,相当于在自己电脑上通过服务器假设了该网站的反向代理

ssh -L 9090:remote-secret:8080 my-remote-host

此时访问local-host:9090就相当于remote-host访问remote-secret.com:8080

提示:如果写成-L 9090:localhost:8080 my-remote-host,访问local-host:9090相当于访问my-remote-host:9090

提示:如果写成-L 9090:my-remote-host:8080 local-host,访问local-host:9090相当于访问my-remote-host:8080

应用举例:如果本机和my-remote-host处于某受保护的内网中,本机的80服务仅限my-remote-host访问,可以借助本机的SSH服务开放一个端口连到my-remote-host再连回本机,获得80服务的访问权限。

提示:默认情况下,本地转发的端口只能在本机上访问,要想允许外部访问,请添加-g选项。

远程转发

服务器无法直接访问本地局域网上的服务,通过远程转发,服务器就能访问到内网中的服务,相当于用服务器做了内网穿透

ssh -R 9090:local-secret.com:8080 my-remote-host.com

这样,remote-secret访问my-remote-host.com:9090就等同于用local-host访问local-secret.com:8080

提示:如果写成-R 8080 my-remote-host那么remote-secret可以通过socks5://my-remote-host:8080访问local-secret

应用举例:有时,本地电脑处于NAT内网中,难以从外部访问;而远程服务器可轻易被访问。利用远程转发功能,可允许他人通过远程服务器间接访问本地电脑的某个端口。

注意:类似本地转发,远程转发的端口默认也只能在远程服务器本机上访问,要想允许外部访问,可改写为-R *:9090:local-secrent.com:8080,并确保在服务器的sshd_config中打开了GatewayPorts选项。

动态转发

动态转发动态地将各种数据转发到远程端口。实际上相当于在本地电脑的指定端口开了一个SOCKS代理。如:

ssh -D 0.0.0.0:9090 my-remote-host.com

本机的9090端口就是一个SOCKS5代理了,local-secret可以通过socks5://local-host:9090访问my-remote-host.com才能访问的remote-secret !

提示:如果my-remote-host.com是境外服务器,则该SOCKS代理实际上具备了“翻墙”功能。

常用参数

端口转发常与以下参数配合使用[3]:

-f
ssh将在后台运行
-N
不执行命令,仅转发端口
-C
压缩传送的数据
-i
使用指定的密钥登录

Leave a Reply

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据