簡體   English   中英

Python Paramiko:手動驗證SSH主機密鑰指紋

[英]Python Paramiko: verifying SSH host key fingerprints manually

我正在使用python Paramiko使用ssh連接到vps提供程序上托管的遠程ubuntu盒。 使用基於Windows 7的客戶端計算機,我可以進行如下連接:

import paramiko
import binascii
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='HOSTNAME', username='USERNAME', password='PASSWORD')

一切都很好,但是現在我想驗證主機服務器的身份,並且由於我在Windows上,因此Paramiko將無法獲取known_hosts文件或類似的文件。 我嘗試了以下代碼:

#... after connection is successful
keys = ssh.get_host_keys()
key = keys['HOSTNAME']['ssh-rsa']
print binascii.hexlify(key.get_fingerprint())
# key.get_fingerprint() returns the md5 hash of 
# the public part of the key (whatever that means)

其輸出類似於以下內容:

a42273f83e62d65cc87231a2ba33eff3

問題是,在我的VPS提供者的面板上,我列出了RSA和DSA主機密鑰指紋,如下所示:

RSA 1b:c2:f4:8f:f2:86:fc:f2:96:ba:cc:24:41:e9:d7:86
DSA 36:b9:1f:ad:53:b5:c4:38:78:bf:cb:9d:38:fa:44:ce

可以看出,沒有一個指紋與生成的指紋匹配。 如何將手動生成的指紋與遠程主機cpanel上的指紋值進行比較? 我做的對嗎?

解決了,事實證明,控制面板中顯示的RSA密鑰指紋不適用於VPS主機,而是用於帶外專用控制台。 (VPS主機的)實際密鑰位於/etc/ssh/ssh_host_rsa_key.pub下,而指紋值(其MD5哈希值)正是我從客戶端驗證代碼中獲得的。 因此開始時沒有任何問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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