Apache VFS - setPreferredAuthentications - 可能的值是什么



我正在研究使用VFS在Java中sftp文件。在以下有关 setPreferredAuthentications 的文档中,它提到了首选身份验证 - 身份验证顺序 - 可能的值是什么?无法在线找到答案

setPreferredAuthentications等效于SSH配置选项PreferredAuthentications,它指定客户端应尝试身份验证方法的顺序。

可能的值是 ssh 身份验证方法的列表:


SftpFileSystemConfigBuilder.getInstance()
.setPreferredAuthentications(opts,"gssapi-with-mic,hostbased,publickey");
//or
SftpFileSystemConfigBuilder.getInstance()
.setPreferredAuthentications(opts,"password,keyboard-interactive");

OpenSSH视角:

如OpenSSH手册中所述:

可用于身份验证的方法包括:基于 GSSAPI 的身份验证、基于主机的身份验证、公钥身份验证、质询-响应身份验证和密码身份验证。身份验证方法按上面指定的顺序尝试,但PreferredAuthentications可用于更改默认顺序。

这允许客户端首选一种方法(例如键盘交互(而不是另一种方法(例如密码(。

例如:gssapi-with-mic,hostbased,publickey,keyboard-interactive,password

OpenSSH 可用的身份验证方法有:

  • gssapi-with-mic
  • hostbased
  • keyboard-interactive
  • none(用于在启用 Cm PermitEmptyPassword 时访问无密码帐户(
  • password
  • publickey

Apache VSF 透视:

Apache VFS 项目使用 Jsch 库作为底层 sftp 提供程序,您可以在其 api 文档中找到 jsch 的详细配置选项。

用户身份验证

方法(用户身份验证(

在这里,用户发送方法列表,我们在选项中有一个方法列表 首选身份验证 (按优先顺序(。我们采用服务器支持的第一个方法,获取userauth.method变量来加载实现类,并尝试进行身份验证。这将重复,直到我们进行身份验证或没有更多方法。

内置了以下内容:

userauth.none主要用于获取服务器支持的方法列表。userauth.password常用密码身份验证。

userauth.keyboard-interactive使用 RFC 4256 中定义的通用消息交换身份验证机制。

userauth.publickey公钥身份验证,使用身份。

userauth.gssapi-with-mic使用 RFC 4462 第 3 节中定义的 GSS-API(见下文(。 对于 GSS-API 机制,我们需要一个 GSSContext 的实现来引用,这将由配置选项 gssapi-with-mic.method 选择,该方法是从服务器给出的列表中选择的。目前,我们(硬编码(仅支持 krb5 方法,导致:

gssapi-with-mic.krb5Kerberos 5 身份验证。

毫米,这很可能与SSH身份验证有关。您可以使用"公钥,密码"来首选公钥身份验证作为指令中的字符串参数。

也许这个答案也会给你更多的线索:

https://serverfault.com/q/986839

以及OpenSSH客户端的文档页面:

https://man.openbsd.org/ssh_config#PreferredAuthentications

相关内容

  • 没有找到相关文章