认证

即使在“普通”的OpenSSH客户机中,对远程服务器的身份验证也涉及到多个潜在的机密和配置源;Fabric不仅支持其中的大多数,而且拥有更多自己的源。本文档概述了设置身份验证机密的可用方法。

注解

由于fabric本身不想重新设计太多的paramiko功能,因此大多数情况下配置身份验证值的过程归结为“如何为设置关键字参数值” SSHClient.connect “,这反过来意味着在 connect_kwargs config 子树,或 connect_kwargs 的关键字参数 Connection .

私钥文件

存储在磁盘上的私钥可能是ssh最常见的身份验证机制。Fabric提供了多种方法来配置要使用的路径,其中大多数最终都合并到一个路径列表中 SSHClient.connect(key_filename=[...]) ,顺序如下:

  • 如果A key_filename 密钥存在于 connect_kwargs 参数 Connection 他们排在第一位。(这基本上是非CLI用户的“运行时”选项。)
  • 配置设置 connect_kwargs.key_filename 可通过多种方式进行设置(根据 config docs )包括通过 --identity cli标志(用于设置 overrides 配置的级别;因此,当使用此标志时,来自其他配置源的密钥文件名值将被覆盖。)此值在整个列表中位于第二位。
  • 使用一个 ssh_config 用文件 IdentityFile 指令允许您与其他ssh客户机共享配置;这些值排在最后。

加密密码

如果您的私钥文件通过密码短语进行保护,则可以通过以下几种方式提供:

  • 这个 connect_kwargs.passphrase 配置选项是提供自动使用的密码短语的最直接方法。

    注解

    对这种类型的材料使用实际的磁盘配置文件并不总是明智的,但请记住 configuration system 能够从其他源(如shell环境甚至任意远程数据库)加载数据。

  • 如果您希望在运行时手动输入密码短语,可以使用命令行选项 --prompt-for-passphrase ,这将导致结构在进程开始时以交互方式提示用户,并将输入的值存储在 connect_kwargs.passphrase (在“覆盖”级别。)

私钥对象

例示你自己 PKey 对象(有关详细信息,请参见其子类的API文档)并将其放入 connect_kwargs.pkey . 就是这样!如果要加载的密钥材料(这些类可以从文件路径或字符串中加载)是加密的,那么您将负责处理密码短语。

SSH 代理

默认情况下(类似于openssh的行为),paramiko将尝试连接到正在运行的ssh代理(unix风格,例如live SSH_AUTH_SOCK ,如果在Windows上,则显示为“pagent”)。可以通过设置禁用此功能 connect_kwargs.allow_agentFalse .

密码

密码验证相对简单:

  • 您可以通过配置 connect_kwargs.password 直接。
  • 如果希望在会话开始时得到提示,请指定 --prompt-for-login-password .

GSSAPI

除了Paramiko现有的连接时间参数,Fabric不提供任何额外的GSSAPI支持(参见 gss_kex/gss_auth /`` GSS主机 SSHClient.connect )以及实现功能本身的模块(例如 paramiko.ssh_gss 因此,像往常一样,您应该修改 connect_kwargs 配置树。