当我通过 Cygwin SSH 进行 SSH 端口重定向时会发生什么?
我的意思是,Cygwin 是否有能力在 Windows 中重定向端口,而无需管理员权限?
或者他是否有效地重定向端口但仅针对使用 Cygwin 运行的应用程序?
或者考虑到我实际上并不是在 Unix 系统上,他是否不重定向端口?
我尝试通过对 Linux 服务器进行连接测试来了解情况,但我收不到任何东西,我认为没有任何端口重定向,应用程序只是通过原始端口发送,数据包丢失,因为 SSH 只在服务器端监听,并且只在某个端口上监听,而这个端口不是我发送的端口
你怎么看 ?
我正在尝试做的:通过 SSH 进行 VNC
netstat 显示本地临时端口已连接到我的服务器的 SSH 端口,但没有显示重定向端口的信息,但我的意思是,SSH 负责处理端口转发,我不应该有除 SSH 端口之外的开放端口。SSH 会通过自己的端口发送所有内容,不是吗?
我从隧道中理解到它应该是这样的:
VNC 查看器 => SERVERIP:VNCPORT => ssh 转换:SERVERIP:SSHPORT => 本地 NIC => Internet => 服务器 NIC => ssh 转换 SERVERIP:VNCPORT => VNC 服务器
因此应用程序认为通信通过 VNCPORT 进入互联网,但实际上通过 SSHPORT 进入,这只是封装
问题是,考虑到这一点,我使用 VNC 时不应该遇到问题,事实是我无法使用它,当 VNC 查看器尝试连接时没有数据包到达服务器(并且 SSH 会话已建立,因此它运行良好)
嗯,实际上并不是这样,只是这样:
TCP 127.0.0.1:5900 0.0.0.0:0 LISTENING
TCP [::1]:5900 [::]:0 LISTENING
当我关闭 SSH 会话时,它们就会消失
这是否意味着确实存在隧道?它是系统范围的、用户范围的、还是 Cygwin 范围的?
答案1
一切正常。您可以看到本地侦听器。我们来看看 OpenSSH 手册:
-L[绑定地址:]港口:主持人:主机端口
-L[绑定地址:]港口:远程套接字
-L 本地套接字:主持人:主机端口
-L 本地套接字:远程套接字指定将与本地(客户端)主机上给定 TCP 端口或 Unix 套接字的连接转发到远程端的给定主机和端口或 Unix 套接字。这通过分配一个套接字来监听 TCP港口在本地,可选择绑定到指定绑定地址或 Unix 套接字。每当与本地端口或套接字建立连接时,该连接都会通过安全通道转发,并且会连接到主持人港口主机端口或 Unix 套接字远程套接字,来自远程机器。
还可以在配置文件中指定端口转发。只有超级用户可以转发特权端口。可以通过将地址括在方括号中来指定 IPv6 地址。
默认情况下,本地端口绑定按照网关端口设置。然而,一个明确的绑定地址可用于将连接绑定到特定地址。绑定地址“localhost” 表示监听端口仅供本地使用,而空地址或 '*' 表示该端口应可从所有接口使用。
因此,您可能使用了类似 的内容ssh -L 5900:vnserver:5900 user@sshserver
。这意味着 SSH 客户端将打开一个localhost:5900
您可以连接的 TCP 侦听器。然后,此连接将通过 SSH 连接转发。SSH 服务器将vncserver:5900
代表您打开一个连接。
有神奇的流量拦截或任何相关功能。要使用您设置的转发,您必须连接到客户端上生成的侦听器。
SSH 端口/套接字转发不需要特殊权限,除非您希望本地端口位于特权端口范围内。
SSH 端口转发可用于所有连接(本地或其他连接,如果在更广泛的范围内监听),就像任何本地 TCP 监听器一样。
SSH 套接字转发与任何 Unix 套接字一样受文件权限约束。