我与SFTP例如玩弄从这里:Stackoverflow: twisted conch filetransferPython的扭曲:扭曲海螺文件传输verifyHostKey
我用这这里进行连接。所以我可以使用字符串中的密钥而不是密码或〜/ .shh中的键。现在,我想从一个hostkey交付hostkey或指纹,以避免提示用户验证hostkey
def sftp(user, host, port, key, hostkey):
options = ClientOptions()
options['key'] = keys.Key.fromString(key.strip()).keyObject
options['host'] = host
options['port'] = port
conn = SFTPConnection()
conn._sftp = Deferred()
auth = SSHUserAuthClient(user, options, conn)
connect(host, port, options, verifyHostKey, auth)
return conn._sftp
我试着给一些参数verifyHostkey,你可以读取它的source帕拉姆指纹没有使用,我还没有找到有效的运输价值。
def verifyHostKey(transport, host, pubKey, fingerprint):
"""
Verify a host's key.
....
任何想法如何,我可以省略用户被提示验证hostkey不写入hostkey到〜/ .shh/known_hosts里面?
好的,我写了一个基于Jean-Paul Calderone答案的函数。我很天真,但工作很好。目标是省略对已知主机文件的需要。我希望所有的钥匙只能存在于记忆中。
def verifyHostKey(transport, host, pubKey, fingerprint):
keytype, key = transport.factory.options['hostkey'].split(" ")[1:]
hostkey = keytype + " " + key
key = Key.fromString(hostkey)
if key.fingerprint() == fingerprint:
return succeed(True)
else:
raise BadKeyError
谢谢,我只是按照你的建议实现了我自己的功能。现在为我工作得很好。 – daccle 2011-03-29 09:33:56