![](/img/trans.png)
[英]Calculate ssh public key fingerprint into base64, why do I have an extra '='?
[英]Get host key of an ssh server in base 64
我正在使用paramiko,並且在以下行中需要base 64上ssh服務器的主機密鑰:
key = paramiko.RSAKey(data=base64.decodestring('...'))
有誰知道通過Mac OS X終端,以python腳本或其他方式找到它的方法? 謝謝
您可以從服務器本身檢索服務器的公共密鑰,而不必向服務器進行身份驗證。
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()
您只需要執行一次此操作,還是需要能夠在運行時以編程方式獲取主機密鑰? 如果只有一次
ssh -v <hostname>
將顯示您的主機密鑰。
>>> 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。 這將取決於協商的密鑰。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.