Linux 伪终端的基本原理 及其在远程登录(SSH,(5)

客户端处于实验图的③处。打开新的终端(终端C),这里简单地使用nc连接远程socket,并且nc的输入输出重定向至键盘、显示器即可。但是要注意,nc是运行在终端C上的,而终端C的默认属性会拦截字符Ctrl+C、使用行缓冲区域。这样nc的输入输出其实并不直接是键盘、显示器。为此,我们先设置终端C的属性,再运行nc:

stty raw -echo nc localhost 2333 #改行没有回显,要摸黑输入

然后,在终端C中出现了我们打印的setsid的信息,和login的提示符。在终端C中,使用键盘可以正常登录,得到shell的提示符。使用tty命令能够看到当前shell使用的控制终端是/dev/pts/20,也就是我们创建的伪终端。输入w命令可以看到系统中登录的用户和登录终端。

Linux 伪终端的基本原理 及其在远程登录(SSH,

至此为止,我们实现了类似telnet的远程登录。

结语

linux中终端驱动本身有回显、行缓存、作业控制等丰富的属性,在此基础上实现的伪终端在终端模拟器、远程登录等场合下能够得到多种应用。

在实验过程中也牵扯到进程控制、输入输出重定向、网络通信这么多的知识,更体现出linux的复杂精致的结构。我感觉,linux 就像一个包罗万象、又自成体统的小宇宙,它采用独特的虚拟化技术,灵活的模块化和重用机制,虚拟出各种设备,实现了驱动程序的随意拼插。在这里,所有模块都得到了充分的利用,并能够像变形金刚那样对各类需求提出面面俱到的解决方案。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13436.html