subprocess并调用sftp命令

时间:2014-10-11 13:25:41

标签: python call sftp

当我在Linux Ubuntu中使用此命令sftp到服务器时:

sftp -b /path/sftp_put user@10.10.10.10

它的行为正确但在我的Python项目中使用调用时如:

call(["sftp", "-b","/path/sftp_put",'user@10.10.10.10'])

它不起作用并产生此错误:

Host key verification failed.
Couldn't read packet: Connection reset by peer

2 个答案:

答案 0 :(得分:0)

第一次使用sftp / ssh连接到服务器时,通常会要求您确认服务器密钥指纹是否正确(可以在客户端设置中更改此行为)

例如:

ssh sftp02.domain.com
  

无法建立主机'ftp02.domain.com(10.90.229.2)'的真实性。   ECDSA密钥指纹是9c:4a:b3:1a:ce:a8:78:81:c6:a1:a1:8b:8f:c0:e0:27。   您确定要继续连接(是/否)吗?是

您必须确认并且密钥将添加到您的已知主机,并且在服务器密钥更改之前不会再次询问您。在这种情况下,服务器已重新安装,密钥重新生成或您被恶意重定向到其他服务器。

答案 1 :(得分:0)

由于sftp是专用的ssh命令,请尝试添加-oStrictHostKeyChecking=no作为参数。我在MacOS上尝试了一下,它似乎起作用了:

  

警告:将“ sftp.example.com,1.1.1.1”(RSA)永久添加到已知主机列表中。

REF:https://askubuntu.com/questions/123072/ssh-automatically-accept-keys