通过 SSH 建立安全连接

Mar*_*ark -1 networking security ssh tunneling ssh-tunnel

我正在设置一个需要通过 SSH2 建立安全连接的服务器应用程序,例如客户端必须打开到服务器的 SSH2 连接才能访问特定应用程序:

% ssh -s -p5000 my.server.com app
Run Code Online (Sandbox Code Playgroud)

我想了解,此命令完成后究竟发生了什么?客户端/服务器如何知道它们必须通过 SSH 安全通道运行?这是否称为 ssh 隧道,或者它有不同的名称?

谢谢。

Nik*_*nov 6

您正在连接到tcp my.server.com:5000,它在那里运行 ssh 子系统“app”。正在执行的操作由该子系统定义(在 ssh 服务器配置文件中)。该子系统可以通过标准输入和标准输出来回传输数据。外部对手看到 tcp 连接,看到这是 ssh 会话,仅此而已。这不称为“ssh 隧道”。

隧道是当您像这样转发一些 TCP 套接字时:ssh firewall -L 12345:system-behind:54321,然后在本地连接到localhost:12345它,就像您坐在防火墙上并system-behind:54321从那里连接一样。您通过 ssh“隧道”tcp 连接。通过添加 -g,您可以允许网络中的任何人you:12345连接到system-behind:54321防火墙,并像连接到防火墙一样。

例如,考虑使用 NAT 和 ssh 服务器的 Linux 防火墙,以及后面的一些 Windows 服务器,它有防火墙,只允许来自本地网络的连接。你可以像这样连接那里:ssh firewall -L 13389:windows-server-address:3389然后xfreerdp /v:localhost:13389;服务器将看到来自防火墙本地地址的连接,而不是来自您的互联网地址。

你可以用相反的方式做到这一点ssh remote -R 12345:system-near-you:54321。然后你在远程打开套接字,坐在远程的人可以连接localhost:12345并最终连接,就像他们坐在你的机器上并连接到system-near-you:54321. 这就是反向隧道。同样, -g 不仅允许那些直接坐在远程上的人,而且允许任何可以连接到remote:12345.

还有 ssh ip 隧道,当您在服务器和客户端上创建虚拟隧道接口时,分配 ip 地址并使用 ssh 连接它们。这被称为 VPN,但是在使用 ssh 机器时不是很方便,而且我从未见过使用它。