我经常被朋友问及帮助解决小型Linux问题,而且我经常需要login到远程系统。 通常在创build帐户和login方面存在很多问题(有时候这个框在NAT设备后面,有时SSHD没有安装,等等),所以我通常只是要求他们使用netcat创build一个连接后的shell( nc -e / bin / bash)。 如果他们没有netcat,我可以让他们获得一个静态编译的二进制文件的副本,这不是很难或耗时下载和运行。
虽然这对于input简单的命令已经足够了,但是我不能运行任何需要tty(例如vi)的应用程序,也不能使用任何作业控制function。 我设法绕过这个问题,通过运行in.telnetd在连接shell内的几个参数,将分配给我一个terminal,并把我放到一个shell。 不幸的是,in.telnetd在大多数系统上通常不会默认安装。
在不需要任何非标准封装的情况下,获得全function连接terminalshell的最简单方法是什么?
(一个小型的C程序也能很好地工作,我似乎找不到很多关于如何分配/分配TTY的文档。一个解决scheme不需要我通过SSHD的源代码和TELNETD会很好:))
由于互联网上未encryption的shell是一件坏事,这个pentestmonkey文章有一些技术可以用来获得一个现有的shell会话的TTY。 最有可能在任何系统上使用Python的:
python -c 'import pty; pty.spawn("/bin/sh")'
用您的selectreplaceshell。
这不是一个标准的程序,但是“socat tcp:your-host:1234 exec:bash,pty”将会完成这项工作。
您还可以通过socat保护与OpenSSL的沟通:
#你的身边: openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout cert.pem socat`tty`,raw,echo = 0 openssl-listen:1237,reuseaddr,cert = cert.pem,verify = 0 #他们的身边: socat openssl-connect:127.0.0.1:1237,verify = 0 exec:bash,pty,stderr,setsid
这将提供很好的回拨terminalencryption。