SSH隧道:动态端口转发,本地端口转发和远程端口转发
在SSH隧道中,在SSH客户端和SSH服务器之间创建一个加密通道。在加密隧道内流动的信息是安全的,因此无法被截获。当运行不安全的协议(例如TightVNC)时,尤其要使用这种服务。它们还可以用于访问内部网络和在其上运行的服务,绕过防火墙,作为VPN和后门。
要安装ssh,请打开终端并输入:
sudo apt-get install openssh-server openssh-client
在Windows上,尽管已经安装了SSH Client,但是大多数人都使用PuTTY。
SSH隧道包括三种类型:动态端口转发,本地端口转发和远程端口转发。
1、动态SSH转发
在动态端口转发中,将创建SOCKS代理服务器,并且建立的连接可以访问大量端口。
ssh -D
假设在工作中,他们已经屏蔽了某些网站,而你希望浏览这些网站。在这种情况下,我们可以使用动态SSH隧道来绕过屏蔽。
例如,在终端中,输入:
ssh -D 8181 jim@34.56.11.52
接下来,我们打开mozilla firefox,并将代理设置设置为localhost和8181。现在,当您浏览Web时,您的系统将在Jim的计算机的端口8181上生成一个SOCKS代理。这些非常适合访问受限站点。
2、本地端口转发
连接从SSH客户端转发到SSH服务器,然后再转发到目的服务器。换句话说,在特定端口上监听的 SSH 客户端将其转发到有 SSH 服务器的远程机器上,并进一步转发到目的服务器上的端口(该端口可以是 SSH 服务器的机器,也可以是另一台机器)。
ssh -L::
例如:
ssh -L 9878:192.168.2.13:8080 34.56.11.52
客户端计算机监听端口9878,并在需要时将来自该端口的传入流量转发到192.168.2.13:8080。换句话说,SSH绑定到端口9878。进入端口9878的所有流量都将通过加密通道转发到SSH服务器(34.56.11.52),然后转发到同一内部网络上192.168.2.13上的端口8080。
在另一个实例中,假设最终目的地是服务器本身,则代码将类似于以下内容:
ssh -L 5901:localhost:5901 34.56.11.52
在这里,我们希望连接到远程计算机上的VNC服务器。客户端计算机正在监听5901,并且当通过VNC查看器在5901上建立连接时,它将通过隧道将连接隧道传输到(服务器的)localhost:5901上的远程计算机。
3、远程端口转发
连接从SSH服务器转发到SSH客户端,然后再转发到目标服务器。
ssh -L::
例如:
ssh -R 9878:192.168.2.13:8080 34.56.11.52
在此,服务器监听端口9878,并将该端口上的所有流量隧道传输到192.168.2.13:8080。在这里,最终目的地是192.168.2.13,服务器的IP地址是34.56.11.52。所有流量都通过隧道传输到端口8080。
ssh -R 8080:localhost:80 34.56.11.52
在这种情况下,服务器的地址是34.56.11.52,并且正在监听端口8080(在服务器上)。在这里,我们将端口8080转发到端口80上的本地主机。最终目的地是客户端本身。
当我们需要加密连接时,SSH隧道是一个很好的工具。它具有广泛的用途,但也可被黑客滥用。