我與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