From 966b62d9bd7e483f1e9484a5a99d8c2db475171c Mon Sep 17 00:00:00 2001 From: prospanclaudebot Date: Fri, 10 Jul 2026 22:10:31 +0000 Subject: initial import: pacan-git --- ssh/Dockerfile | 13 +++++++++++++ ssh/entrypoint.sh | 20 ++++++++++++++++++++ ssh/git-ns | 25 +++++++++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 ssh/Dockerfile create mode 100755 ssh/entrypoint.sh create mode 100755 ssh/git-ns (limited to 'ssh') diff --git a/ssh/Dockerfile b/ssh/Dockerfile new file mode 100644 index 0000000..13367b6 --- /dev/null +++ b/ssh/Dockerfile @@ -0,0 +1,13 @@ +# sshd для git-доступа по ключам. Ключи и authorized_keys приезжают из volume /keys (пишет бот). +FROM debian:bookworm-slim +RUN apt-get update && apt-get install -y --no-install-recommends openssh-server git \ + && rm -rf /var/lib/apt/lists/* \ + && useradd -m -d /home/git -s /bin/sh git \ + && mkdir -p /home/git/.ssh /run/sshd +COPY git-ns /usr/local/bin/git-ns +COPY entrypoint.sh /entrypoint.sh +RUN chmod +x /usr/local/bin/git-ns /entrypoint.sh +EXPOSE 22 +VOLUME /repos +VOLUME /keys +ENTRYPOINT ["/entrypoint.sh"] diff --git a/ssh/entrypoint.sh b/ssh/entrypoint.sh new file mode 100755 index 0000000..c255adf --- /dev/null +++ b/ssh/entrypoint.sh @@ -0,0 +1,20 @@ +#!/bin/sh +set -e +mkdir -p /repos /keys /home/git/.ssh /run/sshd +touch /keys/authorized_keys +chown -R git:git /home/git/.ssh 2>/dev/null || true +chmod 700 /home/git/.ssh +ssh-keygen -A +cat > /etc/ssh/sshd_config <&2; exit 1 ;; +esac +# без слеша -> свой неймспейс +case "$repo" in + */*) ;; + *) repo="$NS/$repo" ;; +esac +# запрет выхода в чужой неймспейс +case "$repo" in + "$NS/"*) ;; + *) echo "чужой неймспейс запрещён" >&2; exit 1 ;; +esac +repo="${repo%/}" +exec git-shell -c "$cmd '$REPOS/$repo'" -- cgit v1.2.3