Answers:
SSH协议由ssh
和sshd
程序接受的内容定义。(为此定义了一个标准,但这是事后的做法,当其中一种实现添加了新功能时,大多数情况下都会忽略它。)因为有多个实现(OpenSSH,F-Secure,PuTTY等)。 ),有时您会发现其中一个不支持与其他协议相同的协议。基本上,它定义了身份验证协商和多路复用数据流的创建。此流可以携带一个或多个(使用OpenSSH和ControlMaster
)终端会话和零个或多个隧道(将套接字连接从本地或远程转发到另一端; X11转发是远程转发的一种特殊情况)。它还定义了可以在流上使用的“子系统”。终端会话是基本子系统,但可以定义其他会话。 sftp
是其中之一。
ssh
该实用程序使用SSH协议sshd
在另一台计算机上进行通信。它的工作方式取决于其版本(请参见上文),但要点是它试图找出要使用的SSH协议版本,然后sshd
协商支持的身份验证方法,然后尝试使用以下方法对您进行身份验证其中一种方法(根据需要询问远程用户密码/私钥密码/ S-Key短语),并在成功进行身份验证后使用设置多路复用流sshd
。
sshd
如上所述,它实现了SSH协议的服务器端。
sftp
是大多数sshd
实现中定义的(目前是唯一的标准)子系统。当请求SFTP子系统时,sshd
连接sftp-server
到子系统会话。sftp
然后,程序与之对话,类似于,ftp
但在流上复用了文件传输,而不是像那样使用单独的连接ftp
。
su
与ssh
,sshd
或无关sftp
,除非可能有PAM模块安排多路复用的流在它运行的shell或程序中可用。