在非交互式 shell 中远程执行时 Netcat 无法按预期工作

在非交互式 shell 中远程执行时 Netcat 无法按预期工作

当尝试以监听模式远程启动 netcat 时,我观察到许多意外行为。
1. 当使用以下命令时:

ssh [email protected] 'nc -l -k 80 &'

我观察到从任何客户端到此侦听器的第一个 tcp 连接都会失败。当尝试建立连接时,侦听器发出 FIN 数据包并关闭连接。但是当再次尝试连接时,连接就会建立。我注意到文件描述符存在一些问题,并且在启动 netcat 时使用 -d 选项时:

ssh [email protected] 'nc -d -l -k 80 &'

,这个问题就解决了。但我无法理解到底是什么导致了这个问题。我的问题是为什么 netcat 在使用 ssh 远程执行时表现不同。

  1. 我注意到的另一个问题是口头模式不起作用。

    SSH[电子邮件受保护]'nc -l -v -k 80 &'

当使用 -v 时,这甚至不会启动 netcat。

答案1

不要以 & 结束命令,而是-f向 ssh 提供标志。当 Netcat 写入输出并且 sshd 消失时,它会因 SIGPIPE 而死亡。或者,如果您不想通过 ssh 将输出发送回,您也可以将 netcat 的输出重定向到一个文件,然后再将其放入后台... > /tmp/nc.log &

相关内容