SSH同时使用公钥和密码进行身份验证

SSH同时使用公钥和密码进行身份验证

我对 SSH 身份验证有些不清楚。

我有一个连接到 sFTP(使用 SSH 协议)的 Talend 作业,在组件的属性页上,我可以选择: 1.Password身份验证 2.PublicKey身份验证

当我选择Password身份验证时,要输入的数据是usernamepassword。但是当我选择PublicKey身份验证时,要输入的数据是usernamepasswordprivate key pathprivate key pass-phrase

我虽然PublicKey在服务器上设置身份验证时不需要密码。

SSH 是否支持使用公钥进行身份验证密码与安全强制措施同时存在,还是只是后备措施,这意味着如果公钥未经授权,将使用标准用户名/密码(如果服务器sshd允许)?

答案1

OpenSSH 6.2引入了多种身份验证方法。

如需参考,请参阅sshd_config(5)。

答案2

通常情况下,如果你使用它PublicKeyPassword它就是一个回退。PublicKey首先尝试,因为它更安全,更有保障,然后Password再尝试。

强烈(而且我还不够大胆)。建议您允许仅有的 PublicKey对您在 Internet 上运行的任何 SSH 服务器进行基于身份验证的验证。

当使用身份验证建立 SSH 连接时,Password密码将发送到服务器。密码身份验证使您可以通过正常途径暴力破解密码。如果有足够多的用户使用该查看服务器(其中一个人会选择蹩脚的密码),那么这种情况就会发生。

基于密钥的身份验证更加安全,因为它将一台计算机上的用户与另一台计算机上的用户绑定。密钥通常是为每个客户端计算机/用户对生成的。当我向客户解释这一点时,我通常会使用身份证的例子。你只有一张身份证,但它可以让你进入很多地方。

也就是说,密钥可以用密码加密。因此,您在本地计算机上生成的密钥可以(并且默认情况下)有一个密码来解密它。这意味着您的本地计算机将要求您输入密码,解密您的密钥,将其发送到服务器,然后服务器将尝试进行身份验证。 (公平地说,它并没有真正解密您的密钥,而是公钥被您的密码“偏移”)。

因此,如果您使用PublicKey,则需要向您尝试连接的用户/机器组合提供公钥。

如果您使用Password,则需要向您尝试连接的服务器提供密码(以明文形式发送)。

如果您使用PublicKeyPassword则需要提供公钥或密码。

相关内容