SSH端口转发

        SSH:Secure Shell,是一种在不安全网络中提供安全连接的协议,通过加密隧道,提供了对远程计算机的访问。

        可不仅是一个远程工具,还有多种功能,比如说端口转发,主要分为以下三种类型:

  • 本地端口转发

  • 远程端口转发

  • 动态端口转发

1、本地端口转发:别人来访问我

        将本地的服务映射给远程电脑上,以便通过远程服务来访问本地的Web应用。

        如:本地有一台web server,端口为80,但是由于防火墙的限制了80端口,但不限制9000端口。通过本地端口转发,我们可以安全地访问内部Web服务,启动本地端口转发:

ssh -L 9000:localhost:80 user@server1

        类似于防火墙的端口映射,不过多了层加密通道;相当于做了加密的内应

2、远程端口转发:别人访问我,但看起来是他在本地访问

        用来欺骗领导?领导你看,网站我搭好了?

        远程端口转发则是将远程服务器上的端口映射到本地计算机上。这样,远程服务器上的服务可以通过本地计算机访问。例如,将远程数据库服务器的端口映射到本地,以便本地应用程序能够访问远程数据库。

        如:将远程服务器上的数据库端口9001映射到本地计算机的端口3306:

ssh -R 9001:localhost:3306 user@remoteserver

        远程端口转发使得远程服务器可以访问本地计算机上的服务,这在需要远程服务器主动连接本地服务的场景中非常有用。例如,可以在远程服务器上执行定时任务,定期连接并获取本地计算机上的数据。实际上也起到了减少对方配置量的作用。

3、动态端口转发(Dynamic Port Forwarding)

        只要连我定义的这个端口,我都代理你们的访问需求,并安全地转发出去,并且不让外界感知到你们的存在!

        动态端口转发允许用户在本地计算机上创建一个动态端口,将所有流量通过SSH通道传输到远程服务器。这样,本地计算机可以作为代理服务器,将所有流量安全地转发到远程网络。动态端口转发常用于实现安全的代理服务,通过这个代理服务,用户可以访问远程网络资源而不直接连接到远程网络。

        如:要创建一个动态端口为1080的代理服务:

ssh -D 1080 user@proxy_server

       在本地浏览器或应用程序中设置代理,使用 proxyserver:1080 作为代理服务器地址。

       通过这种方式,所有的网络流量都会通过SSH通道安全地传输到远程服务器,从而实现了安全的代理服务。动态端口转发在需要通过安全通道访问互联网的场景中非常有用,尤其是在使用不受信任网络时。

        4、其它,如UDP的转发和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]
5、使用场景:

        在实际工作中,SSH端口转发广泛应用于不同的场景,如:

  • 跳板机: 通过中间服务器跳板到内部网络。

  • 访问内部服务: 在受限网络中安全访问内部Web应用、数据库等服务。

  • 安全代理: 在不受信任的网络中建立安全代理服务。

你可能感兴趣的:(运维,linux,ssh,运维)