A fully custom SSH client developed from scratch in C++, implementing all aspects of the SSH protocol from the ground up using sockets, cryptographic primitives, POSIX threads, and raw terminal I/O.
Check out SSH-Client-Design.txt for an overview of the design
- Implements core SSH protocol (RFC 4253)
- Algorithm Negotiation
- Key Exchange
- Encryption/Decryption
- Secure Channel setup
- Interactive shell session
- POSIX sockets for TCP/IP communication over port 22
- Cryptographic operations using OpenSSL 3.0
- Multithreaded architecture with POSIX threads to ensure a smooth user experience
- Raw terminal mode for seamless interactive shell experience
- Packet-level data management
- Minimal external dependencies
curve25519-sha256
diffie-hellman-group14-sha256
ssh-ed25519
rsa-sha2-256
aes128-ctr
aes256-ctr
hmac-sha2-256
hmac-sha1
none
- g++ with C++20 support
- OpenSSL 3.0 (libcrypto)
- POSIX threads (libpthread)
sudo apt install -y build-essential libssl-dev
# Clone the repository
git clone https://github.com/adsouza7/SSH-Client.git
cd SSH-Client/
# Normal build
make
# Verbose build (with logs)
make verbose
# Run this command
./ssh-client <username>@<hostname>