利用 Python 进行 SSH 和文件传输

本文介绍了如何使用Python的paramiko库进行SSH连接,包括建立信任关系、运行远程命令、文件上传下载等,并重点讲解了客户端的使用方法。
摘要由CSDN通过智能技术生成

SSH 通常用于访问远程机器并运行命令、检索文件或上传文件。你可以使用 SFTP(安全文件传输协议)和 SCP(安全复制协议)将文件从远程机器传输到本地,反之亦然。

根据 http://paramiko.org 的介绍,python paramiko 模型提供了 SSHv2 协议的抽象,包括客户端和服务器端功能。作为客户端,您可以使用密码或密钥进行身份验证;作为服务器,您可以决定允许哪些用户访问以及允许访问的通道。

在本文中,我将重点介绍客户端。

Paramiko.SSHClient 是 API 中记录的 Paramiko 的主要客户端,可用于与远程服务器建立连接并传输文件。

建立连接

import paramiko

ssh_client=paramiko.SSHClient()
ssh_client.connect(hostname=’hostname’,username=’admin’,password=’password’)

当你首次连接的时候,可能会遇到以下问题:

missing_host_key raise SSHException(‘Server %r not found in known_hosts’ % hostname) paramiko.ssh_exception.SSHException: Server ‘hostname’ not found in known_hosts

之所以会出现这个错误,是因为你没有告知你的机器,你 "信任 "你试图访问的远程服务器。如果您在命令行或终端上首次尝试连接服务器,您会收到类似下面的信息:

The authenticity of host ‘hostname’ can’t be established.RSA key fingerprint is ‘key’. Are you sure you want to continue connecting (yes/no)?

当您在这里选择 “yes” 时,您就会让您的机器知道它可以信任该机器,您现在就可以访问它而无需提示,直到该机器的密钥发生变化。同样,Paramiko 还要求您验证对机器的信任。这种验证是通过调用 SSHClient 上的 set_missing_host_key_policy(),并在访问新的远程机器时传递你希望执行的策略来完成的。默认情况下,paramiko.SSHclient 会将策略设置为 RejectPolicy。如上文所述,该策略无需验证就会拒绝连接。不过,Paramiko 提供了一种 "信任所有 "密钥策略(AutoAddPolicy)。将 AutoAddPolicy 实例解析为 set_missing_host_key_policy(),可将其改为允许任何主机。

现在再运行代码就不会报错了。

在远程计算机上运行命令

要运行命令,需要在 SSHClient 上调用 exec_command,并传递命令。响应将以元组(stdin, stdout, stderr)形式返回。

例如,列出一个目录中的所有文件:

stdin,stdout,stderr=ssh_client.exec_command(“ls”)

根据 http://paramiko.org 的解释:

  • stdin 是只写文件,可用于需要输入的命令;
  • stdout 文件提供命令的输出结果;
  • stderr 文件给出执行命令时返回的错误。如果没有错误,则为空。

需要输入的命令

有时,您需要提供密码或额外的输入信息才能运行命令。这就是 stdin 的用途。让我们用 sudo 运行上面的命令。

stdin, stdout, stderr = ssh.exec_command(“sudo ls”)
stdin.write(‘mypassword\n’)
print(stdout.readlines())

这样就通过输入密码来执行了 ls 命令。

文件传输

文件传输由 paramiko.SFTPClient 处理,您可以在 Paramiko.SSHClient 实例上调用 open_sftp(),获得该客户端。

从远程机器下载文件

ftp_client=ssh_client.open_sftp()
ftp_client.get(‘remotefileth’,’localfilepath’)
ftp_client.close()

从本地向远程机器上传文件

ftp_client=ssh.open_sftp()
ftp_client.put(‘localfilepath’,remotefilepath’)
ftp_client.close()

如果你也在工作活学习中需要用 Python 操作使用 SSH,不妨试试 paramiko,会为你带来效率上的提高。

以上就是“利用 Python 进行 SSH 和文件传输”的全部内容,希望对你有所帮助。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python必备开发工具

img

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

五、Python练习题

检查学习结果。

img

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

img

最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值