我正在使用paramiko,我需要基础64中的ssh服务器的主机密钥用于以下行:
key = paramiko.RSAKey(data=base64.decodestring('...'))
有没有人知道通过Mac OS X终端,python脚本或其他方式找到这种方法?感谢
答案 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。这取决于协商的密钥。