出于安全原因,人们总是说使用 Secure Shell (SSH) 而不是 Telnet 或 rsh/rcp/rlogin。
SSH 和 rsh 都是远程 shell。我想知道 telnet 是否也是远程外壳?如果是,为什么它是远程 shell,或者我如何理解它是远程 shell?
远程 shell (rsh) 是一种命令行计算机程序,可以作为另一个用户在计算机网络上的另一台计算机上执行 shell 命令。
我查了一下telnet是如何使用的。我发现的是telnet 客户端可以连接到 telnet 服务器(当连接到 telnet 端口时)或另一个进程(当连接到 telnet 端口以外的端口时),它已经在服务器计算机上运行。我觉得telnet不行在服务器计算机上执行 ie 启动 shell 命令,它是远程 shell 定义的一部分。
当我寻找基于 UDP 的 telnet 替代方案时,有些人提到了这一点netcat
,并且nc
是这样的替代方案。如果我是对的,netcat
并且nc
双方都习惯了连接到机器上已运行的进程,但不至于执行 ie 在机器上启动一个进程。是否还表明telnet用于连接到机器上已运行的进程,但不至于执行 ie 在机器上启动一个进程?
如果确实使用telnet连接到机器上已运行的进程,但不至于执行 ie 在机器上启动一个进程,既然 SSH 和 telnet 正在做不同的事情,为什么它与 SSH 相比呢?
谢谢。
附注
我才发现维基百科有关远程 shell 的文章似乎是针对特定程序rsh
并且rshd
.
我所说的“远程外壳” 在我的帖子中是一种程序或协议,可用于连接到远程计算机、在远程启动 shell 以及在 shell 中启动命令或程序。
答案1
telnet
是在联网的 UNIX 机器上获取远程 shell 的传统方法。 rsh
是另一个。 ssh
相比之下,是一个相对较新的人。
telnet
通常与远程 telnet 通信守护进程(或“服务器”进程)。此时,您使用用户名和密码进行身份验证以登录,然后您将获得一个 shell。所以,是的,这是一种获取远程 shell 的方法。
客户telnet
端还可以通过指定另一个端口用于其他连接(例如telnet host 80
与 Web 服务器通信);这不是远程 shell。telnet
对话和身份验证的组合telnetd
提供了远程 shell。
telnet
不建议用于远程 shell,因为用户名和密码通常以纯文本形式通过网络传递;网络嗅探器或“中间人”攻击可以窃取您的密码。不好! ssh
对流量进行加密以帮助防止这种情况。
telnet 给出远程 shell 的示例:
% telnet server.name
Trying 192.168.100.100...
Connected to server.name
Escape character is '^]'.
NetBSD/i386 (server.name) (pts/51)
login: fred
Password:
Last login: Fri Jun 24 21:45:29 2016 from 192.168.1.1 on pts/23
No mail.
$ whoami
fred
$ pwd
/home/fred
$ logout
Connection closed by foreign host.