异步ssh:异步sshv2客户机和服务器库
asyncssh的Python项目详细描述
asyncsh是一个python包,它提供了一个异步客户机和 基于python 3.4的sshv2协议的服务器实现+ 异步框架。
importasyncio,asyncssh,sysasyncdefrun_client():asyncwithasyncssh.connect('localhost')asconn:result=awaitconn.run('echo "Hello!"',check=True)print(result.stdout,end='')try:asyncio.get_event_loop().run_until_complete(run_client())except(OSError,asyncssh.Error)asexc:sys.exit('SSH connection failed: '+str(exc))
查看examples开始!
功能
- 完全支持sshv2、sftp和scp客户端和服务器功能
- shell、命令和子系统通道
- 环境变量、终端类型和窗口大小
- 直接和转发的TCP/IP通道
- 与openssh兼容的直接和转发unix域套接字通道
- 本地和远程TCP/IP端口转发
- 本地和远程Unix域套接字转发
- 通过SOCKS动态TCP/IP端口转发
- 客户端和服务器上都支持X11转发
- 带有openssh扩展的sftp协议版本3
- SCP协议支持,包括第三方远程到远程拷贝
- 在单个ssh连接上同时进行多个会话
- 单个事件循环中的多个ssh连接
- 具有可设置编码的基于字节和字符串的I/O
- 各种key exchange、encryption和MAC算法
- 支持gzip compression
- 包括openssh变量,将压缩延迟到auth之后
- 基于用户和主机的公钥、密码和键盘交互 身份验证方法
- 许多类型和格式的public keys and certificates
- 包括支持RFC 6187中定义的X.509证书
- 支持在unix系统上访问由ssh-agent管理的密钥
- 包括客户端和服务器上的代理转发支持
- 支持在Windows上访问Putty选美代理管理的密钥
- 支持通过openssh的ssh keysign访问主机密钥
- openssh样式known_hosts file支持
- openssh样式authorized_keys file支持
- 与openssh“encrypt then mac”选项兼容,以获得更好的安全性
- 基于时间和字节计数的会话密钥重新协商
- 易于扩展以支持新形式的密钥交换, 身份验证、加密和压缩算法
许可证
此软件包按以下条款发布:
Copyright (c) 2013-2018 by Ron Frederick <ronf@timeheart.net> and others.
This program and the accompanying materials are made available under the terms of the Eclipse Public License v2.0 which accompanies this distribution and is available at:
http://www.eclipse.org/legal/epl-2.0/此程序也可以在以下辅助项下提供 许可证,前提是 满足eclipse公共许可证v2.0:
GNU General Public License, Version 2.0, or any later versions of that licenseSPDX许可证标识符:EPL-2.0或GPL-2.0或更高版本
有关此许可证的详细信息,请参见Eclipse Public License FAQ。
先决条件
要使用asyncssh,您需要以下信息:
- python 3.4或更高版本
- 密码学(PYCA)2.7或更高版本
安装
通过运行以下命令安装asyncsh:
pip install asyncssh
可选附件
可以安装一些可选模块来启用其他 功能:
- 从https://pypi.python.org/pypi/bcrypt安装bcrypt 如果您想支持openssh私钥加密。
- 从https://pypi.python.org/pypi/gssapi安装gssapi 希望在Unix上支持GSSAPI密钥交换和身份验证。
- 从https://github.com/jedisct1/libsodium安装libnadium 还有来自https://pypi.python.org/pypi/libnacl的libnacl 安装了早于1.1.1b的OpenSSL版本,您需要 支持Curve25519密钥交换、ED25519密钥和证书, 或者chacha20-poly1305密码。
- 从http://www.lysator.liu.se/~nisse/nettle/安装libnettle 如果您想支持umac加密散列。
- 从https://pypi.python.org/pypi/pyOpenSSL安装pyopenssl 如果您希望支持X.509证书身份验证。
- 从https://pypi.python.org/pypi/pypiwin32安装pypiwin32 如果要支持使用选美代理或支持 Windows上的GSSAPI密钥交换和身份验证。
asyncsh定义了以下可选的pypi额外包 易于安装任何或所有这些依赖项:
bcryptgssapilibnaclpyOpenSSLpypiwin32
用于Ex例如,要在unix上安装bcrypt、gssapi、libnacl和pyopenssl, 您可以运行:
pip install 'asyncssh[bcrypt,gssapi,libnacl,pyOpenSSL]'
要在Windows上安装bcrypt、libnacl、pyopenssl和pypiwin32,可以运行:
pip install 'asyncssh[bcrypt,libnacl,pyOpenSSL,pypiwin32]'
注意,您仍然需要手动安装lib钠库 上面列出了libnacl的正确工作和/或umac的libnettle 支持。不幸的是,因为lib钠和libnettle不是python 包,它们不能直接使用pip安装。
安装开发分支
如果您想直接安装asyncsh的开发分支 在github中,您可以使用以下命令来执行此操作:
pip install git+https://github.com/ronf/asyncssh@develop
邮件列表
asyncsh有三个邮件列表: