我想使用spiped(http://www.tarsnap.com/spiped.html)在两台机器之间建立双向加密通信,但我怀疑这是一个关于端口转发的问题......这是我迄今为止所做的工作(我的本地机器是OS X Mavericks,而遥控器是Ubuntu 12.04 Virtualbox VM):
远程(在8025上收听外部请求并重定向到8000, 其中nc显示在stdout上):
remote % killall spiped
remote % spiped -d -s '[0.0.0.0]:8025' -t '[127.0.0.1]:8000' -k keyfile
remote % while true; do nc -l 8000; done
然后,本地(在本地监听8001并重定向到8025,将其发送到远程计算机):
local % killall spiped
local % spiped -e -s '[127.0.0.1]:8001' -t '[192.168.56.10]:8025' -k keyfile
现在,当我执行以下操作时,"你好"远程打印到stdout:
local % echo hello | nc 127.0.0.1 8001
所有这一切都很棒。但是从远程机器发送数据并在本地接收数据呢?我天真地假设我可以远程执行此操作:
remote % echo hello | nc 127.0.0.1 8000
使用
在本地读取数据local % nc -l 8001
但是nc在本地没有收到任何数据。我认为我从根本上误解了一些东西。在没有具体答案的情况下,是否有人可以建议阅读相关主题的资源?我不是在寻找使用ssh隧道的解决方案 - 我知道如何做到这一点。
答案 0 :(得分:3)
为了提供与spiped的双向通信,您需要在两台机器上设置以下内容:
一个倾听&一个人在两个系统上都收到有关更多信息,请查看client&的源代码。对于server。
您可以在两个系统上运行spiped服务,但每个系统都需要使用spipe客户端进行手动(或脚本化)连接。
例如使用服务器(在两台计算机上运行以下命令):
spiped {-e | -d} -s <source socket> -t <target socket> -k <key file>
[-DfFj] [-n <max # connections>] [-o <connection timeout>] [-p <pidfile>]
[{-r <rtime> | -R}]
对于希望彼此进行通信(双向)的客户,您必须手动调用客户端:
spipe -t <target socket> -k <key file> [-fj] [-o <connection timeout>]
或者作为使用您的设置的真实示例(绑定到8025的两个服务转发到8000上的nc)。
remote % spiped -d -s '[0.0.0.0]:8025' -t '[127.0.0.1]:8000' -k keyfile
remote % while true; do nc -l 8000; done
local % spiped -d -s '[0.0.0.0]:8025' -t '[127.0.0.1]:8000' -k keyfile
local % while true; do nc -l 8000; done
每个(远程和本地)运行以下命令(nc本地绑定到8001并在8025发送到服务器):
remote % spiped -e -s '[127.0.0.1]:8001' -t '[192.168.56.10]:8025' -k keyfile
local % spiped -e -s '[127.0.0.1]:8001' -t '[192.168.56.11]:8025' -k keyfile
在远程和&amp ;;上发送数据到8001本地转发到本地和远程
remote % echo "hello client" | nc 127.0.0.1 8001
local % echo "hello server" | nc 127.0.0.1 8001
倾听每一个
remote % nc -l 8001
local % nc -l 8001
看看软件是如何设计来保护tarsnap backup software的传输层的,只需要将有效负载加密到服务中。
他们在保护SSH守护程序的文档中的示例通过使用SSH的'ProxyCommand'选项进一步说明了这一点。例如:
您还可以使用spiped来保护SSH服务器免受攻击者攻击:从那以后 数据在转发到目标之前已经过身份验证,这可以 允许您通过SSH连接到主机,同时保护您 有人在SSH守护进程中发现了一个可利用的错误 - 这就是服务器 与端口敲门或限制源IP的防火墙相同的目的 可以连接到SSH的地址。在SSH服务器上,运行
dd if = / dev / urandom bs = 32 count = 1 of = / etc / ssh / spiped.key spiped -d -s'[0.0.0.0]:8022'-t'[127.0.0.1]:22'-k /etc/ssh/spiped.key
然后将服务器的/etc/ssh/spiped.key复制到 在本地系统上添加〜/ .ssh / spiped_HOSTNAME_key并添加行
主机HOSTNAME ProxyCommand spipe -t%h:8022 -k~ / .ssh / spiped_%h_key
到〜/ .ssh / config文件。这将导致“ssh HOSTNAME” 通过spiped守护进程使用spipe客户端自动连接; 然后,您可以在端口tcp / 22上关闭所有传入流量。
有关spiped和spipe的命令行选项的详细列表, 请参阅相应子目录中的README文件。