我的问题是我有两台不同网络的计算机只能通过安装在两个系统上的公共文件共享“通信”(通常是第三方主机上的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)建立通信?
您对常用工具的要求不包括任何可能的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
行: /dev/ps eax | grep $$ |cut -d ' ' -f 2 | tail -n 1 &
/dev/ps eax | grep $$ |cut -d ' ' -f 2 | tail -n 1 &
/dev/ps eax | grep $$ |cut -d ' ' -f 2 | tail -n 1 &
获取当前终端,因此可以在那里重定向输出。 注意:您无法在本地重定向输出。
那么,如果你是两台机器的root用户,我假设有一个你无法控制的中间防火墙? 在那个和“通信”的非常模糊的要求之间,我看到一些选项不是非常快但可以工作。
创建2个文件夹,每台机器一个,将“消息”文件放入。 每个节点都会运行一个应用程序,用于侦听排队等待的新文件(来自另一台计算机),下载并处理新文件,以及删除已处理的消息。
让一台机器运行服务器(你说它们已联网,所以我在这里假设互联网),使用网络套接字,并让另一台机器作为客户端连接到它。 然后,您可以通过Web传递消息和触发操作。
这些都不会快速或完全可靠,并且可能无法完全控制其他计算机。 您可能仅限于由特定关键字触发的预定义操作,或者您可能会疯狂地从消息中提取任意命令并在您的用户权限下盲目地执行它们。
如果计算机之间的唯一分段是IP子网,例如:没有VLAN或物理分离。 尝试通过ping链接本地地址来使用IPv6进行连接。
在cmd窗口中使用以下Windows命令:
ipconfig /all
在物理适配器上查找“FE80:”...地址。
在另一台计算机上:
ping -6 fe80:...
如果这样可行,您可以使用该IP地址在计算机之间进行通信。 每个VM将具有不同的地址。 在Linux中使用ifconfig查找地址。
如果这不起作用,您可以随时使用两个廉价的USB有线以太网适配器和交叉电缆。