跳转到主要内容

libssh2 C库的替代绑定

项目描述

Super fast SSH2协议库。 redlibssh2libssh2提供Python绑定。从ssh2-python分支而来。

License Latest Version https://travis-ci.org/Red-M/redlibssh2.svg?branch=master https://img.shields.io/pypi/wheel/redlibssh2.svg https://coveralls.io/repos/github/Red-M/Redlibssh2/badge.svg?branch=master https://img.shields.io/pypi/pyversions/redlibssh2.svg Latest documentation

安装

提供适用于Linux、OSX和Windows的所有Python版本的二进制轮子包。轮子包没有依赖项。

可能需要更新pip才能安装二进制轮子包 - pip install -U pip

pip install redlibssh2

有关从源安装的说明,包括针对系统提供的libssh2的构建,请参阅文档

有关为Centos/RedHat、Ubuntu、Debian和Fedora创建本地系统包的说明,请参阅文档中的说明

谁应该使用此软件

定制SSH客户端的开发者。

谁不应该使用此软件

寻找现成SSH客户端的开发者。

此库不是一个SSH客户端。

寻找基于此库的高级易于使用的客户端的开发者应使用RedSSH

此库提供对libssh2及其API的绑定,其API与libssh2紧密匹配。

如果示例看起来很长,那么这不是正确的库。请使用 RedSSH

API 功能集

目前所有 libssh2 API 已实现,直到仓库中的 libssh2 版本。请报告任何缺失的实现。

各种操作的完整示例脚本可以在 示例目录 中找到。

此外,由于 redlibssh2libssh2 的一个薄封装,具有 Python 语义,其代码示例可以直接移植到 Python,只需进行最小更改。

库功能

库使用基于 Cython 的本地代码扩展作为 libssh2 的包装器。

扩展功能

  • 线程安全 - 尽可能释放 GIL。注意,libssh2 不支持跨线程共享会话。

  • 开销非常低

  • 由于它使用的 C 库非常出色,并且大量使用本地代码,因此速度非常快

  • 面向对象 - 对象被 Python 垃圾回收时,会自动且安全地释放内存

  • 在适用的情况下使用 Python 语义,例如,为打开和读取 SFTP 文件句柄提供上下文管理器和迭代器支持

  • 引发 Python 异常

  • 提供对 libssh2 错误代码定义的访问

快速入门

接受字节和 unicode 字符串作为参数,并相应地编码。要更改默认编码(utf-8),请更改 ssh2.utils.ENCODING 的值。输出始终为字节字符串。

请参阅 完整示例 以获取包括套接字连接的示例。

请使用问题跟踪器报告代码问题。

欢迎贡献!

身份验证方法

连接并获取可用的身份验证方法。

from __future__ import print_function

from ssh2.session import Session

sock = <create and connect socket>

session = Session()
session.handshake(sock)
print(session.userauth_list())

输出将取决于 SSH 服务器配置。例如

['publickey', 'password', 'keyboard-interactive']

代理身份验证

session.agent_auth(user)

命令执行

channel = session.open_session()
channel.execute('echo Hello')

读取输出

size, data = channel.read()
while(size > 0):
    print(data)
    size, data = channel.read()
Hello

退出代码

print("Exit status: %s" % (channel.get_exit_status()))
Exit status: 0

公钥身份验证

session.userauth_publickey_fromfile(
    username, 'private_key_file')

可以通过 passphrase 关键字参数提供密码短语 - 请参阅 API 文档

密码身份验证

session.userauth_password(
    username, '<my password>')

SFTP 读取

from ssh2.sftp import LIBSSH2_FXF_READ, LIBSSH2_SFTP_S_IRUSR

sftp = session.sftp_init()
with sftp.open(<remote file to read>,
               LIBSSH2_FXF_READ, LIBSSH2_SFTP_S_IRUSR) as remote_fh, \
        open(<local file to write>, 'wb') as local_fh:
    for size, data in remote_fh:
        local_fh.write(data)

完整示例

一个简单的使用示例看起来非常类似于 libssh2 使用示例

请参阅 示例目录 以获取更完整的示例脚本。

如前所述,redlibssh2 故意成为 libssh2 的薄包装,并直接映射其大多数 API。

使用此库的客户端可以使用户使用起来比直接与 libssh2 API 交互更加简单。

from __future__ import print_function

import os
import socket

from ssh2.session import Session

host = 'localhost'
user = os.getlogin()

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, 22))

session = Session()
session.handshake(sock)
session.agent_auth(user)

channel = session.open_session()
channel.execute('echo me; exit 2')
size, data = channel.read()
while size > 0:
    print(data)
    size, data = channel.read()
channel.close()
print("Exit status: %s" % channel.get_exit_status())
输出:

me

退出状态:2

目前实现的 SSH 功能

  • SSH 通道操作(exec、shell、subsystem)和方法

  • SSH 代理功能

  • 公钥身份验证和管理

  • SFTP 操作

  • SFTP 文件句柄和属性

  • SSH 端口转发和隧道

  • 非阻塞模式

  • SCP 发送和接收

  • 端口转发监听器

  • 子系统支持

  • 主机密钥检查和操作

还有更多,请参阅 libssh2 功能。

与其他 Python SSH 库的比较

与 Paramiko 的比较,上述示例的性能。

time python examples/example_echo.py
time python examples/paramiko_comparison.py
输出:

redlibssh2:

real       0m0.141s
user       0m0.037s
sys        0m0.008s

paramiko:

real       0m0.592s
user       0m0.351s
sys        0m0.021s

为什么你放弃了许多linux1 轮子?

因为坦白说,许多Linux1 Docker容器无法在我的构建主机上运行,因为我运行的是最新的软件和内核。许多Linux1 Docker镜像也充满了极其旧的软件包版本,这些版本不会收到更新或安全修复。ParallelSSH处理这个问题的方式是将自己的libssh2、OpenSSL和zlib版本捆绑到仓库中。

项目详情


下载文件

下载适合您平台文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

redlibssh2-2.1.5.post1.tar.gz (1.2 MB 查看哈希值)

上传时间 源代码

构建分发

redlibssh2-2.1.5.post1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl (2.6 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.24+ x86-64

redlibssh2-2.1.5.post1-pp39-pypy39_pp73-manylinux_2_24_aarch64.whl (2.3 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.24+ ARM64

redlibssh2-2.1.5.post1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.5 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ x86-64

redlibssh2-2.1.5.post1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (3.2 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ i686

redlibssh2-2.1.5.post1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.2 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ ARM64

redlibssh2-2.1.5.post1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl (2.6 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.24+ x86-64

redlibssh2-2.1.5.post1-pp38-pypy38_pp73-manylinux_2_24_aarch64.whl (2.3 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.24+ ARM64

redlibssh2-2.1.5.post1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.5 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ x86-64

redlibssh2-2.1.5.post1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (3.2 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ i686

redlibssh2-2.1.5.post1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.2 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ ARM64

redlibssh2-2.1.5.post1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (2.9 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.12+ x86-64

redlibssh2-2.1.5.post1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl (2.9 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.12+ i686

redlibssh2-2.1.5.post1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl (2.6 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.24+ x86-64

redlibssh2-2.1.5.post1-pp37-pypy37_pp73-manylinux_2_24_aarch64.whl (2.3 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.24+ ARM64

redlibssh2-2.1.5.post1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.5 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86-64

redlibssh2-2.1.5.post1-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (3.2 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ i686

redlibssh2-2.1.5.post1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.2 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

redlibssh2-2.1.5.post1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (2.9 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.12+ x86-64

redlibssh2-2.1.5.post1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl (2.9 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.12+ i686

redlibssh2-2.1.5.post1-pp36-pypy36_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (2.9 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.12+ x86-64

redlibssh2-2.1.5.post1-pp36-pypy3_72-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (2.9 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.12+ x86-64

redlibssh2-2.1.5.post1-pp27-pypy_73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (2.9 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.12+ x86-64

redlibssh2-2.1.5.post1-pp27-pypy_41-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (2.9 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.12+ x86-64

redlibssh2-2.1.5.post1-cp311-cp311-manylinux_2_24_x86_64.whl (3.8 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.24+ x86-64

redlibssh2-2.1.5.post1-cp311-cp311-manylinux_2_24_aarch64.whl (3.5 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.24+ ARM64

redlibssh2-2.1.5.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.0 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64

redlibssh2-2.1.5.post1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (4.6 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ i686

redlibssh2-2.1.5.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.7 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

redlibssh2-2.1.5.post1-cp310-cp310-manylinux_2_24_x86_64.whl (3.8 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.24+ x86-64

redlibssh2-2.1.5.post1-cp310-cp310-manylinux_2_24_aarch64.whl (3.5 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.24+ ARM64

redlibssh2-2.1.5.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.0 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

redlibssh2-2.1.5.post1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (4.6 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ i686

redlibssh2-2.1.5.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.7 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARM64

redlibssh2-2.1.5.post1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (4.4 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.12+ x86-64

redlibssh2-2.1.5.post1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl (4.3 MB 查看哈希值)

上传时间: CPython 3.10 manylinux: glibc 2.12+ i686

redlibssh2-2.1.5.post1-cp310-cp310-macosx_12_0_universal2.whl (5.3 MB 查看哈希值)

上传时间: CPython 3.10 macOS 12.0+ universal2 (ARM64, x86-64)

redlibssh2-2.1.5.post1-cp310-cp310-macosx_11_0_universal2.whl (5.4 MB 查看哈希值)

上传时间: CPython 3.10 macOS 11.0+ universal2 (ARM64, x86-64)

redlibssh2-2.1.5.post1-cp310-cp310-macosx_10_10_universal2.whl (4.9 MB 查看哈希值)

上传时间: CPython 3.10 macOS 10.10+ universal2 (ARM64, x86-64)

redlibssh2-2.1.5.post1-cp39-cp39-manylinux_2_24_x86_64.whl (3.8 MB 查看哈希值)

上传时间: CPython 3.9 manylinux: glibc 2.24+ x86-64

redlibssh2-2.1.5.post1-cp39-cp39-manylinux_2_24_aarch64.whl (3.6 MB 查看哈希值)

上传时间: CPython 3.9 manylinux: glibc 2.24+ ARM64

redlibssh2-2.1.5.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.0 MB 查看哈希值)

上传时间: CPython 3.9 manylinux: glibc 2.17+ x86-64

redlibssh2-2.1.5.post1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (4.7 MB 查看哈希值)

上传时间: CPython 3.9 manylinux: glibc 2.17+ i686

redlibssh2-2.1.5.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.7 MB 查看哈希值)

上传时间: CPython 3.9 manylinux: glibc 2.17+ ARM64

redlibssh2-2.1.5.post1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (4.5 MB 查看哈希值)

上传时间: CPython 3.9 manylinux: glibc 2.12+ x86-64

redlibssh2-2.1.5.post1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl (4.4 MB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.12+ i686

redlibssh2-2.1.5.post1-cp39-cp39-macosx_12_0_universal2.whl (5.3 MB 查看哈希值)

上传时间 CPython 3.9 macOS 12.0+ universal2 (ARM64, x86-64)

redlibssh2-2.1.5.post1-cp39-cp39-macosx_11_0_universal2.whl (5.4 MB 查看哈希值)

上传时间 CPython 3.9 macOS 11.0+ universal2 (ARM64, x86-64)

redlibssh2-2.1.5.post1-cp39-cp39-macosx_10_10_universal2.whl (4.9 MB 查看哈希值)

上传时间 CPython 3.9 macOS 10.10+ universal2 (ARM64, x86-64)

redlibssh2-2.1.5.post1-cp38-cp38-manylinux_2_24_x86_64.whl (4.0 MB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.24+ x86-64

redlibssh2-2.1.5.post1-cp38-cp38-manylinux_2_24_aarch64.whl (3.7 MB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.24+ ARM64

redlibssh2-2.1.5.post1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.0 MB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ x86-64

redlibssh2-2.1.5.post1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (4.7 MB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ i686

redlibssh2-2.1.5.post1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.8 MB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ ARM64

redlibssh2-2.1.5.post1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (4.6 MB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.12+ x86-64

redlibssh2-2.1.5.post1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl (4.5 MB 查看哈希值)

上传时间: CPython 3.8 manylinux: glibc 2.12+ i686

redlibssh2-2.1.5.post1-cp38-cp38-macosx_12_0_x86_64.whl (5.3 MB 查看哈希值)

上传时间: CPython 3.8 macOS 12.0+ x86-64

redlibssh2-2.1.5.post1-cp38-cp38-macosx_11_0_x86_64.whl (5.4 MB 查看哈希值)

上传时间: CPython 3.8 macOS 11.0+ x86-64

redlibssh2-2.1.5.post1-cp38-cp38-macosx_10_10_x86_64.whl (4.9 MB 查看哈希值)

上传时间: CPython 3.8 macOS 10.10+ x86-64

redlibssh2-2.1.5.post1-cp37-cp37m-manylinux_2_24_x86_64.whl (3.8 MB 查看哈希值)

上传时间: CPython 3.7m manylinux: glibc 2.24+ x86-64

redlibssh2-2.1.5.post1-cp37-cp37m-manylinux_2_24_aarch64.whl (3.5 MB 查看哈希值)

上传时间: CPython 3.7m manylinux: glibc 2.24+ ARM64

redlibssh2-2.1.5.post1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.9 MB 查看哈希值)

上传时间: CPython 3.7m manylinux: glibc 2.17+ x86-64

redlibssh2-2.1.5.post1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (4.5 MB 查看哈希值)

上传时间: CPython 3.7m manylinux: glibc 2.17+ i686

redlibssh2-2.1.5.post1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.6 MB 查看哈希值)

上传时间: CPython 3.7m manylinux: glibc 2.17+ ARM64

redlibssh2-2.1.5.post1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (4.3 MB 查看哈希值)

上传时间: CPython 3.7m manylinux: glibc 2.12+ x86-64

redlibssh2-2.1.5.post1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl (4.2 MB 查看哈希值)

上传时间 CPython 3.7m manylinux: glibc 2.12+ i686

redlibssh2-2.1.5.post1-cp37-cp37m-macosx_12_0_x86_64.whl (5.3 MB 查看哈希值)

上传时间 CPython 3.7m macOS 12.0+ x86-64

redlibssh2-2.1.5.post1-cp37-cp37m-macosx_11_0_x86_64.whl (5.4 MB 查看哈希值)

上传时间 CPython 3.7m macOS 11.0+ x86-64

redlibssh2-2.1.5.post1-cp37-cp37m-macosx_10_10_x86_64.whl (4.9 MB 查看哈希值)

上传时间 CPython 3.7m macOS 10.10+ x86-64

redlibssh2-2.1.5.post1-cp36-cp36m-manylinux_2_24_x86_64.whl (3.8 MB 查看哈希值)

上传时间 CPython 3.6m manylinux: glibc 2.24+ x86-64

redlibssh2-2.1.5.post1-cp36-cp36m-manylinux_2_24_aarch64.whl (3.5 MB 查看哈希值)

上传时间 CPython 3.6m manylinux: glibc 2.24+ ARM64

redlibssh2-2.1.5.post1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.9 MB 查看哈希值)

上传时间 CPython 3.6m manylinux: glibc 2.17+ x86-64

redlibssh2-2.1.5.post1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl (4.5 MB 查看哈希值)

上传时间 CPython 3.6m manylinux: glibc 2.17+ i686

redlibssh2-2.1.5.post1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.6 MB 查看哈希值)

上传时间 CPython 3.6m manylinux: glibc 2.17+ ARM64

redlibssh2-2.1.5.post1-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (4.3 MB 查看哈希值)

上传时间 CPython 3.6m manylinux: glibc 2.12+ x86-64

redlibssh2-2.1.5.post1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl (4.2 MB 查看哈希值)

上传时间: CPython 3.6m manylinux: glibc 2.12+ i686

redlibssh2-2.1.5.post1-cp36-cp36m-macosx_12_0_x86_64.whl (5.3 MB 查看哈希值)

上传时间: CPython 3.6m macOS 12.0+ x86-64

redlibssh2-2.1.5.post1-cp36-cp36m-macosx_10_10_x86_64.whl (4.9 MB 查看哈希值)

上传时间: CPython 3.6m macOS 10.10+ x86-64

redlibssh2-2.1.5.post1-cp35-cp35m-macosx_12_0_x86_64.whl (5.3 MB 查看哈希值)

上传时间: CPython 3.5m macOS 12.0+ x86-64

redlibssh2-2.1.5.post1-cp35-cp35m-macosx_10_10_x86_64.whl (4.9 MB 查看哈希值)

上传时间: CPython 3.5m macOS 10.10+ x86-64

由...支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页