获取base 64中ssh服务器的主机密钥

时间:2015-07-13 15:29:57

标签: python macos ssh terminal paramiko

我正在使用paramiko,我需要基础64中的ssh服务器的主机密钥用于以下行:

key = paramiko.RSAKey(data=base64.decodestring('...'))

有没有人知道通过Mac OS X终端,python脚本或其他方式找到这种方法?感谢

3 个答案:

答案 0 :(得分:2)

您可以从服务器本身检索服务器的公钥,而无需向服务器验证自己。

import paramiko
import socket
import sys

for arg in sys.argv[1:]:
        sock = socket.socket()
        sock.connect((arg, 22))
        trans = paramiko.transport.Transport(sock)
        trans.start_client()
        k = trans.get_remote_server_key()
        # On my machine, this returns a paramiko.RSAKey
        print k.get_base64()

答案 1 :(得分:0)

您是否只需要执行一次,或者您是否需要能够在运行时以编程方式获取主机密钥?如果只有一次,

ssh -v <hostname> 

将显示主机密钥。

答案 2 :(得分:0)

>>> from paramiko.client import SSHClient

>>> client = SSHClient()
>>> client.connect('hostname')
# This probably will fail since there's no auth set here
>>> rsa_key = client.get_transport().get_remote_server_key()
<paramiko.rsakey.RSAKey object at 0x109305e90>
# however, this still exists
>>> rsa_key.get_base64()
u'AAAAB3NzaC1y...Nhd'

由于你已经使用了paramiko,你可能只想停在rsa_key而不是用get_base64()创建一个新的,因为rsa_key已经是RSAKey类型了。

服务器也可以定义非RSA密钥(或多个),但如果您知道它只返回RSA,那么显然总是会返回RSA。这取决于协商的密钥。