Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

SSRD (Secure Socket Remote Desktop) is a lightweight remote desktop solution with end-to-end encrypted communication over sockets.

License

Notifications You must be signed in to change notification settings

JoshBot-Debug/ssrd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

65 Commits

Repository files navigation

SSRD

SSRD (Secure Socket Remote Desktop) is a lightweight remote desktop solution with end-to-end encrypted communication over sockets.
This project is still in development but already functional enough to be tested.


πŸš€ Features

  • Secure socket-based communication (RSA key exchange).
  • Client/Server architecture.
  • Easy setup with CMake.
  • Minimal dependencies.

πŸ“¦ Requirements

SSRD depends on the following libraries. The same versions of FFmpeg libraries must be installed on both the client and server, since shared libraries are used.

  • FFmpeg
    • libavcodec
    • libavutil
    • libswscale
  • PipeWire
  • libportal (with GTK4 support)
  • OpenSSL
  • OpenGL
  • GLFW3

πŸ› οΈ Build Instructions

Clone the repository and build:

cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build

The compiled binaries will be available in the build/ folder:

  • ssrd-server – run this on the target machine (the one being shared).
  • ssrd-client – run this on the local machine (the one viewing).

▢️ Usage

1. Run the Server

On the target machine:

./ssrd-server

2. Setup Keys

On the client machine, generate RSA keys:

mkdir -p ~/.ssrd/authorized_keys
openssl genpkey -algorithm RSA -out ~/.ssrd/id_rsa
openssl rsa -in ~/.ssrd/id_rsa -pubout -out ~/.ssrd/id_rsa.pub

Copy the generated public.pem into the server machine under:

~/.ssrd/public.pem

Make sure the ~/.ssrd folder exists on the server.

3. Connect from the Client

From your client machine:

./ssrd-client -h <server-ip-address> -i /path/to/private.pem

If ~/.ssrd/private.pem exists on the client, you don't need to pass -i /path/to/private.pem


πŸ“‚ Project Structure

ssrd/
β”œβ”€β”€ CMakeLists.txt
β”œβ”€β”€ src/
β”‚ β”œβ”€β”€ client/ # Client-side code
β”‚ β”œβ”€β”€ server/ # Server-side code
β”‚ └── common/ # Shared utilities
└── README.md

⚠️ Notes

  • This project is not production-ready yet.
  • Error handling and additional security layers are still being improved.
  • The rsa key exchange is primitive, need to improve it among other things.
  • Contributions and feedback are welcome.

πŸ“œ License

MIT License – free to use, modify, and distribute.

About

SSRD (Secure Socket Remote Desktop) is a lightweight remote desktop solution with end-to-end encrypted communication over sockets.

Topics

Resources

License

Stars

Watchers

Forks

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /