
在 Linux 上设置 SSH 隧道是保护您的隐私和安全的一种有用的方法。SSH 隧道加密您的数据,并通过安全通道将其路由到远程服务器,任何人都不可能拦截或读取你的数据。在在本文中,我们将向您展示如何使用Linux 命令行建立 SSH 隧道。
基本 SSH 命令
ssh 命令的基本语法如下:
ssh [user@]hostname [-p port] [command]
以下是该命令的每个部分的作用:
[user@]hostname
您想要连接到的远程服务器,可以指定要用于连接的用户名,例如:username@hostname。
[-p port]
SSH 连接使用的端口号,SSH 默认使用的端口号为 22,可以使用不同的端口号。
[command]
要在远程服务器运行的命令。在本例中,我们将创建一个 SSH 隧道,因此我们不需要指定命令。
建立本地 SSH 隧道
本地 SSH 隧道用于将本地端口转发到远程服务器。例如,您在本地机器上运行 web 服务器,需要从远程服务器访问本地 web 服务器,可以使用本地 SSH 隧道将 web 服务器的端口转发到远程服务器。
命令语法如下:
ssh -L [local_port]:[remote_host]:[remote_port] [user@]hostname -p [port]
以下是该命令的每个部分的作用:
-L [local_port]:[remote_host]:[remote_port]
指定 SSH 隧道使用的本地端口号 (local_port),通过 SSH 隧道连接的远端主机和端口号 (remote_host:remote_port)
[user@]hostname
您想要连接到的远程服务器。您可以指定要用于连接的用户名,例如:username@hostname
-p [port]
SSH 连接使用的端口号,SSH 默认使用的端口号为 22,可以使用不同的端口号。
例如,您想在本地端口 8080 上建立 SSH 隧道,以访问 IP 地址为 192.168.1.100 的远程服务器上的 web 服务器,您将使用以下命令:
ssh -L 8080:localhost:80 user@192.168.1.100 -p 22
该命令建立一个 SSH 隧道,该隧道映射本地端口 8080 连接到远程服务器的 80 端口。允许您在本地机器上访问远程服务器的 web 服务器,在浏览器中通过“http://localhost:8080”浏览网页。
建立远程 SSH 隧道
远程 SSH 隧道用于将远程端口转发到本地机器。例如,在远程服务器上运行数据库服务器,您希望从本地计算机访问,则可以使用远程 SSH 隧道将数据库服务器的端口转发到本地计算机。
ssh -R 3306:localhost:3306 user@192.168.1.100
该命令将远程服务器上的 3306 端口转发到本地机器上的 3306 端口。然后,就可以在本地计算机上连接 localhost:3306,达到连接远程服务器的目的。
建立反向 SSH 隧道
反向 SSH 隧道用于远程服务器连接到本地机器。例如,您有一台 web 服务器运行在本地机器上, 您希望允许从远程服务器访问本地机器。那么,可以使用反向 SSH 隧道在两者之间创建安全连接。
ssh -R 8080:localhost:80 user@192.168.1.100
该命令将远程服务器上的 8080 端口转发到本地 80 端口在本地机器上。然后,您可以浏览 http://remote-server.com:8080 访问本地 web 服务器。
通过 SSH 隧道,可以在远程服务器上安全地访问资源,在机器之间转发端口,而不将它们暴露给公共网络。
保持 SSH 隧道状态
SSH 隧道为了保持开放,需要一个到远程服务器的活动连接。如果连接因任何原因中断,隧道将被关闭,你需要重新设置隧道。
为了避免这种情况,您可以使用像 autossh 这样的工具,它会在连接丢失时自动重新连接 SSH 隧道。
