Python Paramiko 模块2024年8月29日 | 阅读 8 分钟 Paramiko 是一个基于 Python (3.4+, 2.7) 的 SSHv2 协议实现,提供客户端和服务器端的功能。它为更高级别的 SSH 库 Fabric 提供了基础,Fabric 推荐用于常见的客户端用例,例如运行远程 shell 命令或传输文件。 Paramiko 本身的直接使用仅适用于需要高级/低级访问或需要运行 Python 内置 sshd 的用户。 Paramiko 依赖于 cryptography 库进行加密功能,该库使用 C 和 Rust 扩展,但有许多预编译的选项可用。 SSH 在 RFC 4254, RFC 4253, RFC 4252 和 RFC 4251 中定义。该协议的主要工作实现是 OpenSSH 项目。Paramiko 实现了一大部分 SSH 功能集。但是,存在零星的空白。 如何在 Windows 系统上安装 Python Paramiko?高级 Python API 从创建一个安全的连接对象开始。作为客户端,它通过私钥或用户名凭据进行验证,并进行服务器主机密钥验证。拥有更直接的控制,并传递一个附件以开始远程访问。 Paramiko 通过 SSH 连接与远程设备建立连接。Paramiko 使用 SSH2 作为 SSL 的替代品,在两个设备之间建立安全连接。它还支持服务器模式和 SFTP 客户端。 在 Windows 上,要安装 Paramiko, 我们使用 pip 命令在 cmd 中运行以下命令。 输出 Microsoft Windows [Version 10.0.19043.1706] (c) Microsoft Corporation. All rights reserved. C:\Users\User name>pip install paramiko Collecting paramiko Downloading paramiko-2.11.0-py2.py3-none-any.whl (212 kB) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 212.9/212.9 KB 998.2 kB/s eta 0:00:00 Collecting pynacl>=1.0.1 Downloading PyNaCl-1.5.0-cp36-abi3-win_amd64.whl (212 kB) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 212.1/212.1 KB 445.7 kB/s eta 0:00:00 Collecting bcrypt>=3.1.3- - - - - - - - - - - - - - - Downloading bcrypt-3.2.2-cp36-abi3-win_amd64.whl (29 kB) Requirement already satisfied: pycparser in c:\users\user name\appdata\local\packages\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\localcache\local-packages\python39\site-packages (from cffi>=1.1->bcrypt>=3.1.3->paramiko) (2.20) Installing collected packages: pynacl, bcrypt, paramiko C:\Users\User name> 要检查安装是否成功,请运行以下命令 输出 C:\Users\ User >pip list WARNING: Ignoring invalid distribution -ip (c:\users\payal\appdata\local\packages\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\localcache\local-packages\python39\site-packages) Package Version prompt-toolkit 3.0.18 protobuf 3.14.0 PyAudio 0.2.11 Paramiko 2.7.2 pycparser 2.20 pycryptodome 3.10.1 pygame 2.0.1 Pygments 2.9.0 PyJWT 2.1.0 PyNaCl 1.5.0 pyOpenSSL 22.0.0 pyparsing 2.4.7 pypiwin32 223 pyrsistent 0.17.3 PySocks 1.7.1 python-dateutil 2.8.1 python3-openid 3.2.0 pyttsx3 2.90 pywin32 301 如何在 Paramiko 中 SSH 并传输多个文件?SSH 是用于访问远程计算机和运行命令、检索文件或传输文件的常用方法。 SSH 的缩写是“Secure Shell”。SSH 协议被设计为不安全远程 shell 协议的安全替代品。它使用客户机-服务器模型,其中客户机和服务器通过安全通道进行通信。 SSH 在数据中心中广泛用于提供安全管理、远程资源访问、软件补丁和更新。该协议还支持安全的交换机管理、服务器硬件维护和虚拟化平台配置。 由于易用性、健壮性和众多功能,SSH 可应用于各种场景。 这些场景包括
您可以使用 SCP(安全复制协议)和 SFTP(安全文件传输协议)将文件从远程计算机传输到本地计算机,反之亦然。 根据 paramiko.org,paramiko Python 模型是对 SSHv2 协议的封装,同时支持服务器端和客户端功能。作为客户端,我们可以使用密码或密钥进行身份验证;作为服务器,您可以决定允许哪些用户访问以及允许的通道。 建立连接源代码 输出 missing_host_key raise SSHException('Server %r not found in known_hosts' % hostname) paramiko.ssh_exception.SSHException: Server 'hostname' not found in known_hosts 什么是已知主机? 看到此错误是因为您尚未告知您的计算机您“信任”正在尝试访问的远程服务器。如果您在命令行或终端上尝试连接到服务器,首次连接时,您会收到类似如下的消息: 当我们在那里选择“是”时,我们就允许我们的系统访问,这样它就可以信任该系统,并且我们可以像这样访问它,而不会收到提示,直到该计算机的密钥发生变化。 Paramiko 也期望我们通过调用 SSHClient 上的 set_missing_host_key_policy() 并传入要执行的策略来验证我们对系统的信任。默认情况下,paramiko.SSHclient 将策略设置为 RejectPolicy。如前所述,该策略会拒绝未经批准的连接。Paramiko 提供了一种方法来配置“信任所有”密钥策略,即 AutoAddPolicy。将 AutoAddPolicy 的实例传递给 set_missing_host_key_policy() 会将其更改为允许任何主机。 源代码 您的用户帐户现在必须位于绿色列表区域 在任何远程计算机上执行命令要执行命令,会在 SSH 客户端上调用 "exec_command" 命令,并将参数传递给它。预期的响应类型是元组 (stdin, stdout_, stderr) 例如,列出目录中的所有文件 获取每个返回值的类型, stdin 是一个只写文件,可用于需要输入的命令 stdout_ 文件提供命令的输出 stderr 提供执行命令时返回的错误。对于上面的命令,如果没有错误,它将为空。 需要输入的命令 有时您需要提供密码或其他输入来运行命令。这就是 stdin 的用途。让我们使用 sudo 运行上面的相同命令。 应返回文件夹和文件的列表,如上所示。 Paramiko 文件传输paramiko.SFTPClient 方法处理文件传输,我们通过调用 Paramiko.SSHClient 对象的 open_sftp() 函数来获取它。 从远程计算机传输的脚本,此处我们下载文件 上传到远程计算机的脚本,此处我们上传文件 SSH Paramiko 示例:使用密码连接到您的服务器本部分介绍了如何使用用户名和密码向远程服务器进行身份验证。首先,创建一个名为 first_experiment.py 的新文件,并将模型文件中的内容添加到其中。将 YOUR_IP__ADDRESS、YOUR__LIMITED_USER__ACCOUNT 和 YOUR__PASSWORD 的值替换为您自己的值。确保您使用自己的 Linode 详细信息更新文件。 源代码 输出 Filesystem 6K-blocks Used Available Use% Mounted on devtmpfs 69266244 0 69266424 0% //dev tmpfs 69362926 0 69362962 0% /dev//shm tmpfs 69362296 266308 67242988 66/% //run tmpfs 6936296 2 0 69362962 0% /sys/fs/cgroup /dev/mapper/cl-root 4622660724 206068722 26608862 46% / /dev/sda6 9993202 6287324 743684 26%// /boot 说明 上面的文件提供了一个高级示例,您可以使用它将 Paramiko 集成到您的 Python 代码中。虽然所有 Paramiko 功能都可以通过 shell 命令完成,但 Paramiko 为您提供了 Python 的所有强大功能。Python 使您能够访问数据组织、循环、解析和其他强大的功能,这些功能超出了 shell 脚本的功能。例如,如果您正在编写一个程序来计算系统使用率,Python 在从系统输出中提取和计算值方面会更好。 Paramiko 第二个示例:使用 SSH 密钥连接到我们的服务器Paramiko 的一个特殊优势是其对 SSH 密钥的正确处理。上面的初步示例依赖于您受限用户帐户密码的使用。然而,使用 SSH 密钥进行服务器身份验证更安全。下面的示例文件提供了一个报告,该报告会警告您任何未在预期用户列表中记录的用户的登录。Python 脚本依赖于 Paramiko(注意 key_based_connect_() 函数)使用 SSHv2 身份验证来连接到代码的 server_list 列表中的任何服务器。Paramiko 帮助您自动化远程服务器上繁琐的系统管理任务。 更高级的 Paramiko 程序会逐行发送命令。它这样做而不是一次性执行所有命令,例如 df 或 last,然后结束。Paramiko 是您系统管理员工具集的一个有用扩展,可用于自动化常见任务。 Paramiko 是一个小型实用程序,用于报告成功登录帐户(除了在 anticipated 变量中列出的帐户)的情况。此类报告可能导致对这些其他帐户是如何以及为何登录的进行调查。 源代码 输出 Entry user4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pts/0 192.0.2.0 Wed Sept 22 16:13 - 16:28 (02:14)' is on 192.0.2.0. 下一个主题Python 中的分派装饰器 |
我们请求您订阅我们的新闻通讯以获取最新更新。