3

我的问题是我在不同的网络中有两台计算机,它们只能通过安装在两个系统上的公共文件共享“通信”(通常是第三方主机上的 Windows SMB 服务器)。所有其他端口都被封锁!我想使用这个文件共享在这两台机器之间进行直接通信。我在两台机器上都是 root,可以在它们上使用 Windows 或 Linux。也不需要使用 SSH 进行通信,可以使用“netcat”或其他面向命令行的工具。

到目前为止已经做了什么来解决这个问题:我开始了一个(很长的 ;-) 关于隧道 SSH 的讨论,现在被搁置了,SSH:TCP-over-File?, 但包含许多有价值的信息(尤其是来自 Ch. Duffy 等人的信息)。我知道 SSH 不适合那个,但是如果这个 Windows 隧道工具有用的话,这个问题仍然是开放的:https ://labs.mwrinfosecurity.com/tools/tcp-over-file-tunnel/

在这种情况下,如何使用操作系统(Ubuntu 或 Windows 7)附带的常用工具建立通信?

4

4 回答 4

1

您对常用工具的要求不包括任何可能的 Windows 解决方案。

netcat 是一个很棒的工具,如果你有直接的 TCP/IP 连接,这里不是这样。

文件重定向不是问题,因为您可以在本地重定向并在远程拾取;我假设您正在寻找一个更优雅的终端作为您对通信的定义。

您使用 tail -f 走在正确的轨道上,但尝试模拟网络连接需要重写 SSH 以使用文件进行通信。

如“ SSH: TCP-over-file ”中所述,我对您的代码的改进是模拟一个实际的终端。在本地机器上单窗口运行以下代码:

tail -f /mnt/fileshare/my_ssh_out >>/dev/`ps eax | grep $$ |cut -d ' ' -f 2 | tail -n 1` &
cat >> /mnt/fileshare/my_ssh_in 

line:/dev/ps eax | grep $$ |cut -d ' ' -f 2 | tail -n 1 &获取当前终端,因此可以将输出重定向到那里。注意:您不能在本地重定向输出。

于 2018-12-17T20:40:25.720 回答
1

所以,如果你在两台机器上都是 root,我假设有一个你无法控制的中间防火墙?在这和“通信”的非常模糊的要求之间,我看到了一些不是非常快但可以工作的选项。

  1. 创建 2 个文件夹,每台机器一个文件夹以将“消息”文件放入其中。每个节点将运行一个应用程序来侦听正在排队的新文件(来自另一台计算机),下载和处理新文件,并删除处理过的消息。

  2. 让一台机器运行带有网络套接字的服务器(你说它们是联网的,所以我在这里假设是互联网),另一台作为客户端连接到它。然后,您可以通过网络传递消息并触发操作。

这些都不会快速或完全可靠,并且可能不会提供对另一台计算机的完全控制。您可能仅限于由特定关键字触发的预定义操作,或者您可能疯狂到从消息中提取任意命令并在您的用户权限下盲目执行它们。

于 2018-12-17T22:51:36.980 回答
0

如果计算机之间的唯一分段是 IP 子网,例如:没有 VLAN 或物理分隔。尝试通过 ping 链路本地地址使用 IPv6 进行连接。

在 cmd 窗口中使用以下 Windows 命令:

ipconfig /all

在物理适配器上查找“FE80:”...地址。

在另一台计算机上:

ping -6 fe80:...

如果这可行,您可以使用该 IP 地址在计算机之间进行通信。每个 VM 将具有不同的地址。在 Linux 中使用ifconfig来查找地址。

如果这不起作用,您可以随时使用两个便宜的 USB 有线以太网适配器和交叉电缆。

于 2018-12-19T22:04:50.760 回答
0

如果您有从工作站到两台服务器的 ssh 连接 - 只需使用 putty 进行隧道或类似的东西。

于 2022-02-09T10:27:55.380 回答