我需要运行任何“远程 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 中添加-i
or-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