在Connectback Shell中获取TTY

我经常被朋友问及帮助解决小型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。