我对 SSH 身份验证有些不清楚。
我有一个连接到 sFTP(使用 SSH 协议)的 Talend 作业,在组件的属性页上,我可以选择: 1.Password
身份验证 2.PublicKey
身份验证
当我选择Password
身份验证时,要输入的数据是username
和password
。但是当我选择PublicKey
身份验证时,要输入的数据是username
、password
、private key path
和private key pass-phrase
。
我虽然PublicKey
在服务器上设置身份验证时不需要密码。
SSH 是否支持使用公钥进行身份验证和密码与安全强制措施同时存在,还是只是后备措施,这意味着如果公钥未经授权,将使用标准用户名/密码(如果服务器sshd
允许)?
答案1
OpenSSH 6.2
引入了多种身份验证方法。
如需参考,请参阅sshd_config(5)。
答案2
通常情况下,如果你使用它PublicKey
,Password
它就是一个回退。PublicKey
首先尝试,因为它更安全,更有保障,然后Password
再尝试。
我强烈(而且我还不够大胆)。建议您允许仅有的 PublicKey
对您在 Internet 上运行的任何 SSH 服务器进行基于身份验证的验证。
当使用身份验证建立 SSH 连接时,Password
密码将发送到服务器。密码身份验证使您可以通过正常途径暴力破解密码。如果有足够多的用户使用该查看服务器(其中一个人会选择蹩脚的密码),那么这种情况就会发生。
基于密钥的身份验证更加安全,因为它将一台计算机上的用户与另一台计算机上的用户绑定。密钥通常是为每个客户端计算机/用户对生成的。当我向客户解释这一点时,我通常会使用身份证的例子。你只有一张身份证,但它可以让你进入很多地方。
也就是说,密钥可以用密码加密。因此,您在本地计算机上生成的密钥可以(并且默认情况下)有一个密码来解密它。这意味着您的本地计算机将要求您输入密码,解密您的密钥,将其发送到服务器,然后服务器将尝试进行身份验证。 (公平地说,它并没有真正解密您的密钥,而是公钥被您的密码“偏移”)。
因此,如果您使用PublicKey
,则需要向您尝试连接的用户/机器组合提供公钥。
如果您使用Password
,则需要向您尝试连接的服务器提供密码(以明文形式发送)。
如果您使用PublicKey
,Password
则需要提供公钥或密码。