簡體   English   中英

在base 64中獲取ssh服務器的主機密鑰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM