Secure Shell or SSH is a application protocol that allows data to be exchanged using a secure channel between two networked devices.
Used primarily on GNU/Linux and Unix based systems to access shell accounts, SSH was designed as a replacement for Telnet and other insecure remote shells, which send information, notably passwords, in plaintext, rendering them susceptible to packet analysis. The encryption used by SSH provides confidentiality and integrity of data over an insecure network, such as the Internet.
The SSH protocol consists of three major components:
Each server host SHOULD have a host key. The server host key is used during key exchange to verify that the client is really talking to the correct server.
Once the session has been set up, a program is started at the remote end.
The program can be:
Only one of these requests can succeed per channel.
After the key exchange, the client requests a service. The service is identified by a name.
If the server supports the service (and permits the client to use it), it must accept it.
The SSH specification is the following set of specification: