Use Paramiko AutoAddPolicy with pysftp

后端 未结 2 1285
孤街浪徒
孤街浪徒 2020-12-16 23:20

This code is not working:

def sftp_connection(self):
    import pysftp
    connection = pysftp.Connection(self.host, username=self.system_name,
                      


        
2条回答
  •  爱一瞬间的悲伤
    2020-12-17 00:00

    pysftp does not use Paramiko SSHClient class at all, it uses more low-level Transport class. So it does not have the MissingHostKeyPolicy functionality of SSHClient.

    You would have to implement it on your own.

    One possible implementation can be:

    host = 'example.com'
    
    # Loads .ssh/known_hosts    
    cnopts = CnOpts()
    
    hostkeys = None
    
    if cnopts.hostkeys.lookup(host) == None:
        print("New host - will accept any host key")
        # Backup loaded .ssh/known_hosts file
        hostkeys = cnopts.hostkeys
        # And do not verify host key of the new host
        cnopts.hostkeys = None
    
    with Connection(host, username=user, private_key=pkey, cnopts=cnopts) as sftp:
        if hostkeys != None:
            print("Connected to new host, caching its hostkey")
            hostkeys.add(host, sftp.remote_server_key.get_name(), sftp.remote_server_key)
            hostkeys.save(pysftp.helpers.known_hosts())
    

提交回复
热议问题