How SSH works

بقلم Biswakalyan Bhuyan3 minute read

The Genesis of SSH

SSH emerged in 1995, a brainchild of Tatu Ylonen. Its creation stemmed from the discovery of a password sniffer lurking on Ylonen’s Finnish University network. This revelation exposed the glaring insecurity of prevalent connection methods like Telnet and rlogin, which transmitted data in plain text.

Snuff

The Urgency for Secure Communication

Prior to SSH, unsecured connections were commonplace due to the nascent internet. Connections typically occurred within a local network, say, between a server in a building and an administrator’s machine. However, as the internet flourished and connections tranversed vast distance across potentially untrusted networks, the need for security became paramount.

Imagine the chaos if username and passwords for critical servers were intercepted! SSH safeguards against such vulnerabilities by encrypting the data transmitted during a remote connection.

Encryption: The Core of SSH

Encryption is the cornerstone of SSH. It renders the data unreadable to anyone snooping on the network traffic. Even if someone intercepts the data packets, they won’t be able to decipher the usernames, passwords, or any other sensitive information.

While encryption conceals the data content, it doesn’t completely shroud the connection itself. An adversary might glean information like the existence of an SSH connection, the frequency of data packets being exchanged, and the overall volume of data transferred

Beyond Encryption: Padding and Message Authentication

SSH incorporates additional security measures to further thwart potential attacks.

Packet Structure: A Peek Inside

Let’s delve into the structure of an SSH data packe

  1. Packet Length: The initial four bytes specify the entire packet’s size.
  2. Padding Length: The next byte indicates the amount of padding included in the packet.
  3. Payload: This section contains the actual data being transmitted.
  4. Padding: The padding bytes follow, their size determined by the preceding value.
  5. Message Authentication Code: The packet concludes with a MAC (Message Authentication Code) for verification.

The entire packet is then encrypted, rendering it indecipherable to anyone snooping on the network.

SSH Negotiation: Client and Server Dance

When you initiate an SSH connection, your machine establishes a TCP connection with the remote server. Subsequently, a negotiation phase commences, Where the client and server agree on the encryption algorithems to be employed. Both parties can configure their prefrences to disable outdated or weak encryption methods, ensuring a robust connection.

Channels: Multiplexing for Efficiency

SSH facilitates the creation of multiple channels between your machine and the server. Imagine these channels as virtual tunnels, enable you to establish numerious connections simultaneously. This is akin to having multiple tabs open in your terminal, each representing a distinct connection to the server.

You can leverage these channels for various purposes, such as uploading or downloading files, working within a terminal-based text editor, and even setting up SSH tunnels.

X11 Forwarding: Running Graphical Applications Remotely

For Linux environments, SSH offers a fascinating feature called X11 forwarding. This functionality allow you to execute graphical applications on a remote machine and view them on your local machine. It’s as if the graphical application is running directly on your computer!

Tunneling: Creating Secure Passageways

SSH tunneling enables you to channel data traffic through an excrypted SSH connection. This proves beneficial when connecting to services behind firewalls or for situations where you require an extra layer of security for your data transfer.

Conclusion

SSH stands as a cornerstone of secure remote connections. It safeguards your data with encryption, bolstered by padding and message authenticaion codes, Its versatility extends beyond secure communication, enabling functionalities like X11 forwarding and tunneling.

I hope this comprehensive explanation of SSH has been enlightening. Thanks for reading.