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/server
go 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.