vi 通过 netcat 会话

kAl*_*own 4 vi shell netcat

是否可以通过 netcat 使用 vi?

服务器:

mkfifo tun; sh tun | netcat -l 4444 > tun
Run Code Online (Sandbox Code Playgroud)

客户:

netcat SERVER_IP 4444
Run Code Online (Sandbox Code Playgroud)

Will 给了我远程 shell,但发送特殊热键是一个问题,例如我无法在vi中按ESC进入“正常模式” 。

或者最好的选择是sed

tha*_*guy 6

此命令将来自 nc 的输入作为脚本运行,并且由于此脚本不会编辑文件的相同原因而失败:

#!/bin/sh
vi file
42G
dd
:wq
Run Code Online (Sandbox Code Playgroud)

具有讽刺意味的是,您可以使用script避免将其作为脚本运行,而是获取终端会话进行交互:

server$ mkfifo tun; script -q < tun | netcat -l 4444 > tun
Run Code Online (Sandbox Code Playgroud)

(有些netcats需要-p在上面的端口之前)

此外,您应该禁用本地回显和行缓冲,以便按键立即通过连接,而不是在按 Enter 时:

client$ stty -icanon -echo; nc localhost 4444
Run Code Online (Sandbox Code Playgroud)

您现在应该能够编辑vi.

这显然只是一个简洁的概念证明。想要通过网络提供强大的 shell 访问的非 root 用户应该使用sshd.