Introduction to SSH (Secure Shell)

Nowadays people usually have different computers at work or home. But what if you come back to home from work and wanted to continue work on some files while being at work, but those files are only stored in your computer at work. How you can access those files from home? Best option is to use some program to connect to computer at workplace from home, for this purpose programs like ftp(File Transfer Protocol) can be used. Similarly there exists programs like telnet for remote logins and rsh for doing remote execution of commands on a computer. But usually these programs(ftp, telnet, rsh) are not secured and files being transferred on network can be easily compromised and someone can access those files while these are being transferred. So there is a serious security threat. In order to overcome, this security threat SSH(Secure Shell) program was made.

What is SSH(Secure Shell)? SSH is a powerful, secured software for transferring data across a network. SSH automatically encrypts the data before sending it to a network and decrypts data when it arrived at destination location through the network. Meaning there are less security vulnerabilities which can be taken advantage of by some hacker to acess data being transferred over network.

Architecture of SSH

SSH architecture involves SSH client and Server client. An SSH server program, typically installed and run by a system administrator, accepts or rejects incoming connections to its host computer. Users then run SSH client programs, typically on other computers, to make requests of the SSH server, such as “Please log me in”, “Please send me a file” or “Please execute this command”. All communications between clients and servers are securely encrypted and protected from modification.

SSH(Secure Shell) architecture

What is SSH Protocol?

SSH is a protocol, a kind of specific program which allows for secured communication across a network. Typically SSH Protocol follows three steps for establishing a secured connection between two end points => Authentication, Encryption and Integrity.

  • Authentication means determining someone’s identity. If in case you try to log in to a remote server via SSH, then SSH first will ask for login details like username and password, if correct details are entered then only SSH will allow user to access remote server.
  • Encryption means once user have authenticated to access a remote system, then data transferring requests happenning between remote system and user will all be encrytped so that while request is going through network anyone cannot just take it and see what’s inside it.
  • Integrity means that SSH will ensure there will be no data change while data travels from one system to another system. Even if due to any reason there is a data change then SSH will detect it and try to inform user about that change.

Features of SSH

  • Secure Remote Login – SSH can be used for connecting to a remote system like a Server or Computer.
  • Secure File Transfer – SSH can be used for securely transferring files between different systems.
  • Secure Remote Command Execution – Using SSH you can connect to Terminal/Command Line of a remote system and can send commands from one system to another system.
  • Access Control – In case if you need to give control of your system to some other person, but you want another person to have only restricted access(Not access to whole system). In this case, SSH can be used.
  • Port Forwarding – SSH can be used for forwarding requests coming to a specific port on a server to another port. For example – If TCP/IP requests are coming to a server on port 3002 then if these requests contain necessary user details then SSH can forward these requests to port 119 on server.

Gagan

Hi, there I'm founder of ComputerScienceHub(Started this to bring useful Computer Science information just at one place). Personally I've been doing JavaScript, Python development since 2015(Been long) - Worked upon couple of Web Development Projects, Did some Data Science stuff using Python. Nowadays primarily I work as Freelance JavaScript Developer(Web Developer) and on side-by-side managing team of Computer Science specialists at ComputerScienceHub.io

Leave a Reply

Your email address will not be published. Required fields are marked *

Recent Posts