m4r*_*c0s 3 linux ssh authentication openssh sftp
我最近在某处读到:
SSH 密钥用于加密,而 SFTP 密钥用于身份验证。
考虑一下,我们有一个客户端机器C和一个 SFTP 服务器S。为了建立 SSH 连接(使用公钥/私钥),客户端创建密钥对 PU c和 PR c。将公钥PU c添加到authorized_keys服务器S 中的文件中,客户端C 使用其私钥PR c建立连接。
但是,我已经读过,对于 SFTP,密钥对是在服务器中针对用户创建的,并且私钥共享给客户端,以便他们对 SFTP 连接进行身份验证。 也就是说,服务器装置S创建PU小号和PR小号和私钥PR小号是考虑到客户端C来验证他的SFTP连接。这种理解是否正确?
如果是,我知道设置 SSH 连接分 3 个阶段进行:
客户端如何在步骤 3 中验证他们的 SFTP 会话(使用他们事先从服务器获得的私钥)?
没有“SFTP 密钥认证”这样的东西,也根本没有“SFTP 密钥”。
SFTP 始终使用标准 SSH 作为传输方式——差异仅在您成功通过身份验证后才开始(客户端然后请求交互式会话或“sftp”子系统会话)。换句话说,SFTP 的工作方式与 Git-over-SSH 或 Rsync-over-SSH 完全相同。
最后,SSH 密钥不用于加密;所有这些都仅用于身份验证(双向)。因此,您阅读和引用的句子在所有可能的方面都是虚假的。
这里是然而用于认证两个密钥对-一个属于其公钥是由客户端验证服务器(安装过程中创建的),以及一个属于客户端,其公钥是由服务器验证。
SFTP 和交互式 SSH 的总体过程是:
known_hosts. (签名数据包括之前协商好的会话密钥等参数,防止中间人攻击。)authorized_keys. (在这个阶段,数据只是一个随机挑战。)客户端甚至可以在同一连接上打开多个会话——支持多路复用的客户端(如 OpenSSH 或 Tunnelier)将允许您仅进行一次身份验证,然后在同一连接上运行多个交互式 shell 和/或 SFTP 传输。
(另外,我很可能会混淆 SSH '会话' 和 '频道' 的相对顺序,但至少你有一个粗略的想法。)
请注意,步骤 3 中的客户端可以通过其他方式(例如 Kerberos 或简单密码)验证自己,而不需要使用密钥对。对于 SFTP 和交互式 SSH,这仍然完全相同。
| 归档时间: |
|
| 查看次数: |
481 次 |
| 最近记录: |