使用私钥验证失败的pysftp

Authentication failed pysftp with private key

使用 Pysftp 库通过 sftp 连接到服务器,尝试连接时出现身份验证失败。

但是在 filezilla 中使用相同的凭据我能够连接。

from pysftp import CnOpts, Connection
from paramiko import RSAKey
import io

private_key_text = '''
-----BEGIN OPENSSH PRIVATE KEY-----
   key removed...
-----END OPENSSH PRIVATE KEY-----
'''

    passphrase = 'my_passphrase'
    private_key = RSAKey.from_private_key(io.StringIO(private_key_text), password=passphrase)
    host = 'host_address'
    username = 'username'
    cnopts = CnOpts()
    target_dir = '/home'
    cnopts.hostkeys = None
    with Connection(host=host, username=username, private_key=private_key, private_key_pass=passphrase,
                    cnopts=cnopts, default_path=target_dir) as sftp:
        print(f'Successfully connected to remote SFTP server [{host}]')
    

Paramiko 最近在 2.9.x 中添加了一些代码,这会导致 paramiko.ssh_exception.AuthenticationException('Authentication failed.') 异常。尝试显式安装 paramiko==2.8.1 并查看问题是否仍然存在。

https://www.paramiko.org/changelog.html

查看 2.9.0 的更改日志说明

这里还有这个问题:https://github.com/paramiko/paramiko/issues/1961