使用 netcat 进行制表符补全:

使用 netcat 进行制表符补全:

我需要运行任何“远程 shell 守护进程”(ssh、telnet、netcat、socat...我不介意)非root用户。远程 shell 应提供制表符补全我希望能够使用箭头浏览历史记录

我目前正在使用基于 netcat 的解决方案,但是我松散制表符完成我无法浏览历史记录使用箭头

在服务器端:

# Run the "remote shell daemon"
$ mkfifo fifo
$ nc -l 2000 <fifo | /bin/bash &> fifo
$ rm fifo

在客户端:

# Connect to the remote shell
$ nc $REMOTE_ADDR 2000

在 bash 中添加-ior-l参数没有帮助。

答案1

socat(1) 可能会有所帮助。

http://stuff.mit.edu/afs/sipb/machine/penguin-lust/src/socat-1.7.1.2/EXAMPLES:

// poor mans 'telnetd' replacement
# socat tcp-l:2023,reuseaddr,fork exec:/bin/login,pty,setsid,setpgid,stderr,ctty
// and here an appropriate client:
$ socat -,raw,echo=0 tcp:172.16.181.130:2023

在这里,该示例使用“登录”,这显然需要 root 访问权限,但我成功地使用 /bin/zsh 进行了测试。这意味着安全性不是问题...否则,正如我在其中找到此提示的网页中所说,您可以使用带有 SSL 的客户端身份验证来确保只有您可以实际登录。

答案2

使用 netcat 进行制表符补全:

- stty   : change and print terminal line settings  
- echo   : echo input characters  
- icanon : enable erase, kill, werase, and rprnt special characters
- sane   : Revert back default terminal line setting

命令 :

bash-4.3# stty -echo -icanon && nc ... && stty sane

例子 :

stty -echo -icanon && nc 0 5000 && stty sane Note : 5000 is the port number

有关更多信息,您可以参考 linux 手册页:

Linux 手册页 - stty

Linux 手册页 - netcat

相关内容