Chapter 10. SSH
SSH, the Secure SHell, is an essential tool for many developers and administrators. SSH provides a way to establish encrypted, authenticated connections. The most common use of an SSH connection is to get a remote shell, but it’s possible to do many other things through SSH as well, including transferring files and tunneling other connections.
The twisted.conch
package adds SSH support to
Twisted. This chapter shows how you can use the modules in twisted.conch
to build SSH servers and clients.
Setting Up a Custom SSH Server
The command line is an incredibly efficient interface for certain tasks. System administrators love the ability to manage applications by typing commands without having to click through a graphical user interface. An SSH shell is even better, as it’s accessible from anywhere on the Internet.
You can use twisted.conch
to create an SSH server
that provides access to a custom shell with commands you define. This shell
will even support some extra features like command history, so that you can scroll
through the commands you’ve already typed.
How Do I Do That?
Write a subclass of twisted.conch.recvline.HistoricRecvLine
that implements your shell
protocol. HistoricRecvLine
is similar to twisted.protocols.basic.LineReceiver
, but with
higher-level features for controlling the terminal.
To make your shell
available through SSH, you need to implement a few different classes that twisted.conch
needs to build an SSH server. First, you
need the twisted.cred
Get Twisted Network Programming Essentials now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.