Python实现 SSHv2 协议的异步客户端和服务器端:AsyncSSH
jopen
10年前
AsyncSSH这个 Python 包在Python asyncio框架的基础实现 SSHv2 协议的异步客户端和服务器端。求 Python 3.4 或者更新版本以及 PyCA 库或者是 PyCrypto 库用于加密功能。
显着特征:
-
Written from the ground up to be based on Python 3
-
- Support for a number of key exchange methods
-
- Diffie Hellman group1 and group14 with SHA1
- Diffie Hellman group exchange with SHA1 and SHA256
- Elliptic Curve Diffie Hellman (nistp256, nistp384, and nistp521)
- Curve25519 (if curve25519-donna Python wrapper is installed)
- Support for multiple authentication methods
-
- Password, public key, and keyboard-interactive </ul> </dd></dl></li>
-
- Support for a variety of public key formats
-
- DSA, RSA, and ECDSA keys
- PKCS#1/PKCS#8 DER and PEM, OpenSSH, and RFC4716 formats
- Password-based encryption of private keys </ul> </dd></dl></li>
-
- Support for a variety of ciphers (provided via PyCA or PyCrypto)
-
- AES, ARC4, Blowfish, CAST, and Triple DES </ul> </dd></dl></li>
-
- Support for a variety of MAC algorithms
-
- HMAC with MD5, SHA1, SHA256, and SHA512 </ul> </dd></dl></li>
-
- Support for gzip compression
-
- Including OpenSSH variant to delay compression until after auth </ul> </dd></dl></li>
-
Support for passing environment variables, terminal type, and window size
-
Support for multiple simultaneous sessions on a single SSH connection
-
Support for handling multiple SSH connections in a single event loop
-
Support for direct and forwarded TCP/IP channels
-
Support for both byte and string based I/O with settable encoding
-
Compatibility with OpenSSH "Encrypt then MAC" option for better security
-
Time and byte-count based session key renegotiation
-
Designed to be easy to extend to support new forms of key exchange, authentication methods, ciphers, and compression algorithms
</ul>