关于通过私钥与 python 结构连接的问题

Question about connection by private key with python fabric

如何使用私钥为我的连接指定密码?我在织物文档中没有找到任何相关信息。

这是我的连接:

c = Connection(host="host",user="usr",connect_kwargs={"key_filename": "/home/user/.ssh/pkey",},)

错误:

paramiko.ssh_exception.PasswordRequiredException: Private key file is encrypted

根据文档说:

connect_kwargs.passphrase 配置选项是提供自动使用密码的最直接方式。

快速修复:

c = Connection(host="host",user="usr",connect_kwargs={"key_filename": "/home/user/.ssh/pkey", "passphrase": "demo"},)

Here you can find more details. Also in here.

推荐的方法 是在您的 shell 会话中导出环境变量。例如export SSH_PASSPHRASE="gongo-aso!

然后可以在传递给 Connection 对象的构造函数的 connect_kwargs 选项中读取和使用它。

connect_kwargs = {
    'passphrase': getenv('SSH_PASSPHRASE')
}

c = Connection('user@ip.address', connect_kwargs=connect_kwargs)

根据documentation,您可以通过以下方式传递密码:

c = Connection(host="host",user="usr",connect_kwargs={"key_filename": "/home/user/.ssh/pkey","passphrase":"mysecretpassphrase"},)