SSH 101: Junior to Senior Web Dev Roadmap
Tags: webdev, beginners, programming, tutorial
Published: 2023-10-18 07:27:40

Are you someone who is a junior developer struggling to climb up the corporate ladder and become a senior developer?

Are you a full-stack developer who feels lost and doesn't know where to start? 🤔

Well, you are in the right place! 😎

SSH plays an important role in secure remote communication. By familiarizing yourself with SSH basics, its commands, encryption methods, SSH key management, and applying SSH for real-world applications, you're well on your way to becoming a Senior Developer.

### What is SSH?

- SSH is an abbreviation for the network protocol Secure Shell or Secure Socket Shell.
- SSH is a protocol designed to establish secure communication between two computers.
- In simple terms:
  - a protocol is just a bunch of rules
  - and SSH is a specific type of protocol, that provides a way for machines to communicate with one another.

### Commonly known Protocols

The following are commonly known protocols that provide us with a way to connect two computers and have a shared agreement on how to communicate.

- **HTTP** (HyperText Transfer Protocol) allows you to send files over the internet, like HTML, CSS and JavaScript files, between browsers and servers.
- **FTP** (File Transfer Protocol) also allows you to send files and is often used when you upload files to hosting platforms (for example: Hostgater), from your computer.
- **HTTPS** (HyperText Transfer Protocol Secure) is similar to HTTP, but it's encrypted. That means third parties can't read the files being transferred if they intercept the messages.
- There are many other protocols that you can explore.

#### SSH vs HTTPS

- SSH and HTTPS are both a form of secure communication as they're both encrypted.
- A Web Browser uses HTTPS protocol to talk with servers and display websites.
- A Shell uses SSH protocol to enable data exchange or communication between two devices, not just a browser and a server.

#### SSH vs SSL

- SSH creates a secured network between computers that makes data transfer possible.
- SSL, on the other hand, encrypts the data that’s being transferred, reducing malicious and phishing attempts.

### Significance of SSH

- Compared to the above commonly known protocols, SSH is another protocol that allows us to communicate between two computers over the internet.
- SSH is a protocol to use over shell. A shell unlike a browser, allows you to talk to the Operating System.
- SSH allows users to share files, as well as control and modify remote computers over the internet.
- SSH was created as a secure way of communication that encrypts all data so that bad actors can't monitor you.
- The significant advantage offered by SSH over the predecessors is the use of encryption, to ensure secure transfer of information between the host and the client.

### SSH in practice


![SSH in Practice Shell Snapshot Source Hostinger](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y9nqrrapuxo1qodgc87n.JPG)

- The example above shows a typical SSH prompt. Any Linux or macOS user can SSH into their remote server directly from the terminal window.
- Windows users can take advantage of [SSH clients like Putty](https://www.hostinger.com/tutorials/how-to-use-putty-ssh).
- You can execute shell commands in the same manner as you would if you were physically operating the remote computer.
- Source: https://www.hostinger.com/tutorials/ssh-tutorial-how-does-ssh-work

### What next?

Learn more about the following topics with the help of the resources provided at the end of this blog to solidify your knowledge in _SSH_

- **SSH Commands**: One of the primary uses of SSH is to execute commands on remote computers. This means you can establish a connection to a server and interact with it using SSH commands.

- **Encryption**: To truly grasp SSH, it's important to understand key concepts such as encryption, which involves both symmetric and asymmetric encryption techniques, as well as hashing. These concepts lay the foundation for a deeper understanding of SSH's security mechanisms.

- **SSH Keys**: An integral part of SSH is the use of SSH keys. These keys consist of a public key and a private key. Learning how to generate, manage, and securely store these keys on the server is crucial for effective SSH usage.

- Practice and Test your SSH skills:
  - A great way to practice your SSH skills is by connecting your local computer to platforms like **GitHub** or cloud providers such as [**DigitalOcean**](https://m.do.co/c/201036484da7). This hands-on experience will help solidify your understanding of SSH concepts.
  - Imagine this scenario: "Your web application mysteriously disappears from the server overnight. Your task is to restore all project files onto the server using SSH." Successfully completing this task showcases your SSH skills and your problem-solving abilities. Basically, if you can do this, you're awesome!

### Best Resources

Learn more about _SSH_ with the help of the following short and concise resources:

- Learn about [how SSH works](https://www.hostinger.com/tutorials/ssh-tutorial-how-does-ssh-work), and [how to SSH into a server](https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process).
- Learn a little about [Symmetric and Asymmetric encryption](https://www.youtube.com/watch?v=GSIDS_lvRv4) as well as [Hashing](https://www.youtube.com/watch?v=b4b8ktEV4Bg)
- Learn how to [manage SSH keys](https://www.youtube.com/watch?v=DbPDraCYju8)

Learn more about the _Junior to Senior Web Development Roadmap_ with the help of the comprehensive resources:

- [Junior to Senior Web Developer Roadmap Blog Series](https://dev.to/aswin2001barath/series/24357): A Blog series where I will be learning and sharing my knowledge on each of the above topics.
- [Don’t be a Junior Developer: The Roadmap From Junior to Senior](https://academy.zerotomastery.io/a/aff_5s8ff6y7/external?affcode=441520_dcwk-s8s): A detailed roadmap blog by Andrei Neagoie (a Senior Developer) with links to free resources.
- **Zero To Mastery Course**: [The Complete Junior to Senior Web Developer Roadmap Course](https://academy.zerotomastery.io/a/aff_hpwn5xy9/external?affcode=441520_dcwk-s8s): A comprehensive course by Andrei Neagoie (the same Senior Developer) that covers all of the above topics.

### **Who Am I?**

- I’m Aswin Barath, a Software Engineering Nerd who loves building Web Applications, now sharing my knowledge through [Blogging](https://medium.com/techsoftware) during the busy time of my freelancing work life.
- I'm also a Junior Developer like you learning how to become a Senior Developer and sharing my knowledge along the way.
- Here’s the link to all of my socials categorized by platforms under one place: https://linktr.ee/AswinBarath

**Thank you** so much for reading my blog🙂.