????????SSH:Secure Shell,是一种在不安全网络中提供安全连接的协议,通过加密隧道,提供了对远程计算机的访问。
????????可不仅是一个远程工具,还有多种功能,比如说端口转发,主要分为以下三种类型:
本地端口转发
远程端口转发
动态端口转发
????????将本地的服务映射给远程电脑上,以便通过远程服务来访问本地的Web应用。
????????如:本地有一台web server,端口为80,但是由于防火墙的限制了80端口,但不限制9000端口。通过本地端口转发,我们可以安全地访问内部Web服务,启动本地端口转发:
ssh?-L?9000:localhost:80 user@server1
????????类似于防火墙的端口映射,不过多了层加密通道;相当于做了加密的内应。
????????用来欺骗领导?领导你看,网站我搭好了?
????????远程端口转发则是将远程服务器上的端口映射到本地计算机上。这样,远程服务器上的服务可以通过本地计算机访问。例如,将远程数据库服务器的端口映射到本地,以便本地应用程序能够访问远程数据库。
????????如:将远程服务器上的数据库端口9001映射到本地计算机的端口3306:
ssh?-R?9001:localhost:3306?user@remoteserver
????????远程端口转发使得远程服务器可以访问本地计算机上的服务,这在需要远程服务器主动连接本地服务的场景中非常有用。例如,可以在远程服务器上执行定时任务,定期连接并获取本地计算机上的数据。实际上也起到了减少对方配置量的作用。
????????只要连我定义的这个端口,我都代理你们的访问需求,并安全地转发出去,并且不让外界感知到你们的存在!
????????动态端口转发允许用户在本地计算机上创建一个动态端口,将所有流量通过SSH通道传输到远程服务器。这样,本地计算机可以作为代理服务器,将所有流量安全地转发到远程网络。动态端口转发常用于实现安全的代理服务,通过这个代理服务,用户可以访问远程网络资源而不直接连接到远程网络。
? ? ? ? 如:要创建一个动态端口为1080的代理服务:
ssh?-D?1080?user@proxy_server
???????在本地浏览器或应用程序中设置代理,使用 proxyserver:1080?作为代理服务器地址。
???????通过这种方式,所有的网络流量都会通过SSH通道安全地传输到远程服务器,从而实现了安全的代理服务。动态端口转发在需要通过安全通道访问互联网的场景中非常有用,尤其是在使用不受信任网络时。
????????SSH端口转发主要支持TCP流量,但在某些场景下可能需要处理UDP流量。为了处理UDP流量,可以使用-w
选项,将隧道模式设置为"tunnel"。这允许SSH处理UDP流量,使得UDP流量也能够通过安全通道传输。
ssh -w 0:0 -L [localport]:[destaddr]:[destport] [remoteserver]
????????多层嵌套的端口转发SSH端口转发支持多层嵌套,通过这种方式,可以在不同的层次上建立多个安全通道。如,通过在本地计算机和远程服务器之间嵌套两次端口转发,可以将本地计算机上的服务映射到远程服务器上的不同端口。????????
ssh -L [本地端口1]:localhost:[目标端口1] user@remote-server1
ssh -L [本地端口2]:localhost:[目标端口2] user@localhost -p [本地端口1]
????????在实际工作中,SSH端口转发广泛应用于不同的场景,如:
跳板机:?通过中间服务器跳板到内部网络。
访问内部服务:?在受限网络中安全访问内部Web应用、数据库等服务。
安全代理:?在不受信任的网络中建立安全代理服务。