From 4b4a65fa9615d53a0906f703489036c33e1979db Mon Sep 17 00:00:00 2001 From: Greg Hendrickson Date: Tue, 27 Jan 2026 17:19:05 +0000 Subject: [PATCH] fix: SSH key permissions and configurable port --- Dockerfile | 11 ++++++----- src/shellmate/ssh/server.py | 6 ++++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index ec4460c..e0f6f9a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,13 +15,14 @@ COPY src/ src/ # Install Python dependencies RUN pip install --no-cache-dir . -# Generate SSH host key -RUN mkdir -p /etc/shellmate && \ - ssh-keygen -t ed25519 -f /etc/shellmate/ssh_host_key -N "" +# Create user and directories +RUN useradd -m shellmate && \ + mkdir -p /etc/shellmate && \ + chown shellmate:shellmate /etc/shellmate -# Run as non-root -RUN useradd -m shellmate +# Switch to shellmate user and generate SSH key USER shellmate +RUN ssh-keygen -t ed25519 -f /etc/shellmate/ssh_host_key -N "" EXPOSE 2222 diff --git a/src/shellmate/ssh/server.py b/src/shellmate/ssh/server.py index b80a908..ccf22ca 100644 --- a/src/shellmate/ssh/server.py +++ b/src/shellmate/ssh/server.py @@ -78,10 +78,12 @@ async def handle_client(process: asyncssh.SSHServerProcess) -> None: async def start_server( host: str = "0.0.0.0", - port: int = 22, - host_keys: list[str] = None, + port: int | None = None, + host_keys: list[str] | None = None, ) -> None: """Start the SSH server.""" + import os + port = port or int(os.environ.get("SHELLMATE_SSH_PORT", "2222")) host_keys = host_keys or ["/etc/shellmate/ssh_host_key"] logger.info(f"Starting ShellMate SSH server on {host}:{port}")