我想连接到远程计算机(最好通过 SSH),然后从那里提取命令。
准确地说,我想让一台远程计算机连接到我的本地计算机,在本地计算机上我将有一个交互式控制台,发送命令并查看输出。
从功能上来说,它类似于 Windows 远程助手,或者叫什么名字。
我可以想象我会实现一个具有 GUI 的 HTTP 服务器,并且根据请求,它将永远保持连接并将我键入的任何行发送到 GUI;并接收对方发送的所有内容作为其输出。我只需要处理 HTTP 标头。然而,这不太优雅。
有没有现成的解决方案?或者可以使用nc
一些工具将 TTY 与监听端口连接起来?
答案1
如果你运行:
socat "unix-listen:$HOME/.shell-access,mode=600,fork" \
"exec:$SHELL,pty,stderr,setsid,ctty"
例如,这允许您执行以下操作:
socat -,raw,echo=0 "unix:$HOME/.shell-access"
在本地,与该 shell 连接并交互。
然后你可以通过 ssh 进行远程端口转发:
ssh -R "/path/to/socket/on/host:$HOME/.shell-access" user@host
(假设 openssh 版本相对较新(客户端和服务器))。
然后user
就host
可以通过这样做与该 shell 进行交互
socat -,raw,echo=0 "unix:/path/to/socket/on/host"
$SHELL
您可以运行screen -xRS some-screen-session
来附加给定的会话,而不是运行,screen
以便多个人可以看到相同的屏幕会话。
答案2
与传统的netcat。
服务器:
$ nc.traditional -lvp 1234 -e /bin/sh
客户:
$ nc -nv <ip> 1234
您还可以通过 ssh 转发端口。
答案3
我想让远程计算机连接到我的本地计算机,在那里我将有一个交互式控制台
在您的语言环境机器上创建监听:
socat file:`tty`,raw,echo=0 tcp-listen:PORT
在远程计算机上键入以下命令:
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:YOUR_IP_ADDRESSE:PORT