我正在尝试使用 paramiko 建立 sftp 连接并使用主机密钥指纹验证 ssh 连接。主机密钥已提供给我,格式如下:
SHA256:lZ4rtJE62SWt6P+AS5q0+JZrpG/5Mejdm7sL/cvy4A8=
import paramiko
from base64 decodebytes
fingerprint = b'lZ4rtJE62SWt6P+AS5q0+JZrpG/5Mejdm7sL/cvy4A8='
host_key = paramiko.RSAKey(data=decodebytes(fingerprint))
这导致:
UnicodeDecodeError:'utf-8' codec can't decode byte 0x8a in position 2: invalid start byte
使用 FileZilla 连接我可以看到 Hostkey 算法是ssh-rsa 2048
.
谁能帮我RSAKey
从提供的 SHA256 指纹创建,以便我可以使用以下方法连接和验证主机:
ssh = paramiko.SSHClient()
ssh.get_host_keys().add(hostname=my_host_name, keytype=host_key.get_name(), key=host_key)
ssh.connect(hostname=my_host_name, port=22, username=my_user_name, pkey=my_private_key)
sftp = ssh.open_sftp()
有几点需要注意:
- 我已经要求使用主机公钥,但这不是即将到来的。显然是由于 SFTP 服务器被托管为“AWS Transfer Family”服务,该服务仅提供服务器主机密钥。
- 由于组织政策(太旧),我无法使用 pysftp。