- SSH隧道(SSH tunneling)是一个在一个客户端和服务器之间创建加密的SSH连接的方法,它通过能够被转播的端口进行。
- SSH传送(SSH forwarding)对于运送网络中的服务数据很有用,它使用未加密的协议,比如VNC或者FTP,来获取受到地域限制的内容,或者绕开中间的防火墙。基本上,你可以传送任何TCP端口和打通通道通过一个安全的SSH连接。
- 这里有三种类型的SSH端口传送:
- 局部端口传送:从客户端主机到SSH服务器主机传送连接,之后再到达目标主机端口。
- 远程端口传送:从服务器主机传送一个端口到客户主机,之后再到目标主机端口。
- 动态端口传送:创建一个SOCKS代理服务器,它允许在一个范围的端口号之间进行交流。
局部端口传送
- 局部端口传送(Local port forwarding)允许你来传送一个本地机器的端口(ssh client)到一个远程机器的端口(ssh server),之后它在传送到目标机器的端口上。
- 在这种传送类型下,SSH客户端监听一个给定的端口,以及打通任何从该端口到远程SSH服务器的特定端口的任何连接,这个服务器之后连接到目标机器上的一个端口。目标机器可以是远程SSH服务器或者任何其他机器。
- 局部端口传送最经常被用来连接到一个远程的服务在一个内在的网络中,比如一个数据库或者VNC服务器。
- 在Linux,macOS和其他的Unix系统中,为了创建一个局部端口传送,要给定一个-L选项给ssh客户端:
ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION:DESTINATION_PORT [USER@]SSH_SERVER
- 这个选项的使用如下:
- [LOCAL_IP:]LOCAL_PORT - 本地机器的IP地址和端口号,当LOCAL_IP被省略的时候,ssh客户端绑定在localhost。
- DESTINATION:DESTINATION_PORT - IP或者主机名,以及目标机器的端口。
详情查阅以下文档:
https://linuxize.com/post/how-to-setup-ssh-tunneling/