认证¶
即使在“普通”的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_agent
到 False
.
GSSAPI¶
除了Paramiko现有的连接时间参数,Fabric不提供任何额外的GSSAPI支持(参见 gss_kex
/gss_auth
/`` GSS主机 SSHClient.connect
)以及实现功能本身的模块(例如 paramiko.ssh_gss
因此,像往常一样,您应该修改 connect_kwargs
配置树。