Skip to content

[Initiative] Implement Git-over-SSH Protocol in gitstore-api #104

@juliuskrah

Description

@juliuskrah

Summary

Implement Git-over-SSH protocol support inside gitstore-api so clients can clone, fetch, and push using ssh://git@<host>/<repo>. All low-level repository operations are delegated to gitstore-git-service via gRPC (#65), keeping gitstore-api as the single network-facing entry point for Git traffic.

Scope

In Scope

  • Implement an SSH server within gitstore-api that handles Git's SSH channel protocol (git-upload-pack, git-receive-pack).
  • Delegate repository operations to gitstore-git-service over the gRPC contract from [Initiative] Decouple API from Git Storage via gRPC Git Service #65.
  • Configurable SSH listen address and port via environment variables.
  • Host key loading from environment or filesystem.
  • Authentication and authorisation hooks for SSH public keys (initial implementation: accept configured keys or bypass for development).
  • Integration tests for git clone, git fetch, and git push over SSH.
  • Update Compose configuration and documentation for SSH setup and usage.

Out of Scope

  • Building a full SSH key management portal.
  • Replacing the existing HTTP smart protocol support.
  • Implementing SFTP or other SSH subsystems.
  • Certificate-based SSH authentication (public key only in this iteration).

Acceptance Criteria

  • A Git client can clone a repository over SSH against gitstore-api.
  • git fetch and git push over SSH work with expected auth behavior.
  • SSH service startup fails fast with a clear error if host key configuration is missing or invalid.
  • CI includes SSH transport coverage for clone, fetch, and push happy-path operations.
  • Compose and documentation include SSH port setup and a quick-start example.

Dependencies

Tracking

  • Milestone: TBD

Metadata

Metadata

Assignees

No one assigned
    No fields configured for Feature.

    Projects

    Status
    Triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions