Python Paramiko - 确定可用的密码和密钥交换算法

时间:2015-07-08 16:32:11

标签: python encryption ssh paramiko

我有一个使用Paramiko库用Python编写的自动SFTP程序。如果我建立连接,我可以使用显示传输的密码和密钥交换算法。但是,我不确定这与可用的算法和密码是否相同

示例:

>>> import paramiko
>>> ssh = paramiko.SSHClient()
>>> ssh.load_system_host_keys()
>>> ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
>>> ssh.connect("myhost.example.com", 22, username="xyzzy")
>>> t = ssh.get_transport()
>>> so = t.get_security_options()
>>> so.kex
('diffie-hellman-group14-sha1', 'diffie-hellman-group-exchange-sha1', 'diffie-hellman-group1-sha1')
>>> so.ciphers
('aes128-ctr', 'aes256-ctr', 'aes128-cbc', 'blowfish-cbc', 'aes256-cbc', '3des-cbc', 'arcfour128', 'arcfour256')

这与可用相同吗?如果没有,有没有办法以编程方式确定可用的内容?

1 个答案:

答案 0 :(得分:1)

99.5%返回的SecurityOptions class为:

  

包含ssh传输的安全性首选项的简单对象。       这些是可接受的密码,摘要,密钥类型和密钥的元组       交换算法,按优先顺序列出。

因此,它列出了Paramiko库支持的密码和kex算法(或者您已配置/允许的子集)。

是的,你(和Paramiko)为连接提供了

实际上使用最终是服务器也支持的最优选的密码/密钥算法(在您的术语中可用)。