如何指定在 paramiko ssh/sftp 连接上使用的不同密码?(类似于 scp/ssh 中的 -c 命令行)。
我尝试过以下代码:
self.sshclient = paramiko.SSHClient()
self.sshclient.load_system_host_keys()
self.sshclient.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.sshclient.connect(hostname, **ssh_kwargs)
self.transport = self.sshclient.get_transport()
self.transport.get_security_options().ciphers = ('arcfour128',)
self.transport.set_keepalive(keepalive)
self.channel = self.transport.open_session()
self.channel.settimeout(timeout)
Run Code Online (Sandbox Code Playgroud)
但在调试时我可以看到:
2016/02/26 15:27:47 DEBUG Ciphers agreed: local=aes128-ctr, remote=aes128-ctr
2016/02/26 15:27:47 DEBUG using kex diffie-hellman-group1-sha1; server key type ssh-rsa; cipher: local aes128-ctr, remote aes128-ctr; mac: local hmac-sha1, remote hmac-sha1; compression: local none, remote none
Run Code Online (Sandbox Code Playgroud)
我在某处读到 Connect 应该在导致我的反转之后发生(get_security_options()似乎传输与连接有关)。self.transportNoneType
SSHClient 的问题是会话是在 Transport 文档期间connect()并根据Transport 文档启动的:
更改这些字段的内容和/或顺序会影响底层传输(但前提是您在启动会话之前更改它们)。
你可以做的是覆盖 的Transport首选密码:
paramiko.Transport._preferred_ciphers = ('arcfour128', )
self.sshclient = paramiko.SSHClient()
self.sshclient.load_system_host_keys()
self.sshclient.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.sshclient.connect(hostname, **ssh_kwargs)
...
Run Code Online (Sandbox Code Playgroud)
如果您只想要一个 SFTP 连接,您可以创建第一个并从该传输Transport创建对象:SFTPClient
self.transport = paramiko.Transport((hostname, 22))
self.transport.get_security_options().ciphers = ('arcfour128', )
self.transport.connect(username=user, password=pass) # or pkeys, ...
self.transport.set_keepalive(keepalive)
self.sftp = paramiko.SFTPClient.from_transport(self.transport)
self.sftp.put('local_file', 'remote_path')
self.sftp.close()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8310 次 |
| 最近记录: |