fabric2 使用私钥

问题描述 投票:0回答:2

所以我有这个小脚本:

#!/usr/bin/env python
#-*- coding: utf-8 -*-

from fabric2 import Connection

c = Connection('192.168.1.666',connect_kwargs={"key_filename": "privatekey"})


c.local('touch test3.txt')


#with c.cd('/home/gaiman/productmicro'):
    #c.run('git pull origin master')

with c.cd('/home/gaiman/productmicro'):
    c.run('touch test4.txt')

问题是我的私钥有问题:

  File "/usr/local/lib/python3.6/dist-packages/paramiko/pkey.py", line 289, in _read_private_key
    raise SSHException("not a valid " + tag + " private key file")
paramiko.ssh_exception.SSHException: not a valid RSA private key file

但是私钥在脚本的同一个文件夹中。

不明白

python fabric
2个回答
0
投票

所以我需要为织物创建特定的键:

为织物生成密钥:

$ ssh-keygen -t rsa -b 4096

这将使用 RSA 算法生成 SSH 密钥。

并注意将它们正确命名为 id_rsa 任何其他名称都可能对结构造成破坏


0
投票

我怀疑你的问题是因为 Fabric 目前不支持使用 PKCS#8 等关键文件格式。 Fabric 使用 Paramiko 创建只能使用 PKCS#1 文件的 ssh 连接。这是 Paramiko 中已知的未修复问题。见https://github.com/paramiko/paramiko/issues/1015

PKCS#1 RSA 文件通常如下所示。如果没有“RSA”,那么它可能是 PKCS#8,它是在更现代的 openssl 版本上默认生成的。

-----BEGIN RSA PRIVATE KEY-----
baSe64...
-----END RSA PRIVATE KEY-----

转换很简单:

openssl rsa -in private_pkcs8.pem -out private_pkcs1.pem
© www.soinside.com 2019 - 2024. All rights reserved.