【发布时间】:2021-05-30 19:59:21
【问题描述】:
我正在尝试使用 paramiko 将文件从 s3 存储桶上传到外部 SFTP 服务器。我一直收到 BadHostKeyException:服务器“XXXXXXX”的主机密钥不匹配:得到“got_key”预期“expect_key”。我检查了Automatically updating known_hosts file when host key changes using Paramiko,但不确定“BadHostKeyException”是否是中间人攻击的标志。有人可以帮忙吗?
#Read ssh key
key_obj = boto3.resource('s3').Object(s3_bucket, key_file)
key_str = key_obj.get()['Body'].read().decode('utf-8')
key = paramiko.RSAKey.from_private_key(io.StringIO(key_str), password='XXX') // password is private key password
#Create SSH client for SFTP upload
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.get_host_keys().add('sftp_host', 'ssh-rsa', key)
ssh_client.connect('sftp_host', port=22, username='user_name', pkey=key)
ftp_client= ssh_client.open_sftp()
【问题讨论】:
-
您是否在问 BadHostKeyException 是否是中间人攻击的标志? – 是的,这是一个标志。但是还有其他原因可能会导致密钥被更改(例如重新安装服务器)。
-
@MartinPrikryl 我该如何解决这个问题?你能帮帮我吗?
-
你想帮助什么?我们无法知道主机密钥更改是否合法。询问服务器管理员。这不是编程问题。
-
我尝试过使用不同的内部 SFTP 服务器,它运行良好。因此,不确定是什么在更改主机密钥。我正在寻求有关确定在连接期间更改密钥的原因以及我应该如何解决该问题的帮助。
-
"key has been changed during connection"是什么意思?其他 SFTP 服务器与您使用此特定 SFTP 服务器的问题有什么关系?同样,我认为您在这里没有编程问题。看起来您的 SFTP 服务器主机密钥已更改,您不知道为什么会发生这种情况。这不是我们可以在这里回答的问题。询问您的服务器管理员。
标签: python amazon-s3 ssh sftp paramiko