gSSH is a remote connection tool built in Go, leveraging gRPC to streamline secure server-client communication. It features TLS/SSL encryption for secure data transmission, ensuring confidentiality and integrity of interactions.
- Secure Communication: TLS/SSL encryption to ensure data confidentiality;
- Remote Access: Execute commands remotely across servers;
- Built with gRPC: Leveraging gRPC for efficient and scalable remote communication;
- Go 1.18+
- OpenSSL (for generating certificates)
-
Clone the repository:
git clone https://github.com/pedrohenrikle/gSSH.git cd gSSH -
Generate TLS/SSL certificates (for development):
mkdir -p cert openssl req -x509 -newkey rsa:4096 -keyout cert/server.key -out cert/server.crt -days 365 -nodes -subj "/CN=localhost" -
Install dependencies:
go mod download
-
Setup environment variables:
touch .env
And follow the example on
.env example.
go run cmd/server/server.go --port=<port>or build as:
mkdir -p out
go build -o out/server cmd/server/server.go
./out/servergo run cmd/client/client.go --id=<session_id> --port=<port>or build as:
mkdir -p out
go build -o out/client cmd/client/client.go
./out/client-
-
--id: (Optional) Session ID to run to an existing session. -
--port: (Optional) Port to run the TCP connection with the server.
-
-
--port: (Optional) Determines the port to run the TCP conection.
cert/: Contains TLS/SSL certificates;cmd/client/: Client code to connect and interact with the server;cmd/server/: Server code to handle client requests;pkg: Contains packages that encapsulate different functionalities.proto/: Protocol buffer definitions for gRPC;pb/: Protocol buffer auto-generated files that define data structures and service interfaces for gRPC;out/: Directory to compiled/build binaries;
This project is licensed under the MIT License.