diff --git a/Dockerfile b/Dockerfile index ffc07bea..843b5d37 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,6 +12,11 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt -y install curl git rsy apt-get clean &&\ rm -rf /var/lib/apt/lists/* +# entrypoint.sh starts an ssh-agent on this fixed, container-local socket; let +# `docker exec ... bash` sessions attach to the same agent without writing to the +# bind-mounted home. No-op when the socket is absent. +RUN printf '\n[ -S /tmp/wheel-ssh-agent.sock ] && export SSH_AUTH_SOCK=/tmp/wheel-ssh-agent.sock\n' >> /etc/bash.bashrc + FROM base AS run_base WORKDIR /usr/src/ COPY package.json package.json diff --git a/entrypoint.sh b/entrypoint.sh index d5cdc6cc..593c77da 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -27,9 +27,15 @@ if [ "xYES" == "x${WHEEL_ANONYMOUS_LOGIN}" ]; then export WHEEL_ENABLE_AUTH=YES fi -SSH_ENV_FILE=/root/ssh_env -ssh-agent -s > ${SSH_ENV_FILE} -source ${SSH_ENV_FILE} -echo "source ${SSH_ENV_FILE}" >> /root/.bashrc +# start an ssh-agent for the WHEEL server. WHEEL spawns many `ssh` subprocesses +# (ssh-client-wrapper) that inherit SSH_AUTH_SOCK from this process, so with +# AddKeysToAgent in the user's ssh config the key passphrase is entered once (via +# the browser prompt) and reused, and agent forwarding works for ProxyJump chains. +# The socket lives on a container-local path (/tmp is not bind-mounted) so nothing +# is written into a bind-mounted home - a shared /etc/bash.bashrc line (see +# Dockerfile) lets `docker exec ... bash` pick up the same agent. +export SSH_AUTH_SOCK=/tmp/wheel-ssh-agent.sock +rm -f "${SSH_AUTH_SOCK}" +ssh-agent -a "${SSH_AUTH_SOCK}" > /dev/null -npm start +exec npm start diff --git a/server/app/db/version.json b/server/app/db/version.json index 72d48229..2df01726 100644 --- a/server/app/db/version.json +++ b/server/app/db/version.json @@ -1 +1 @@ -{"version": "2026-0910-132440-beta" } \ No newline at end of file +{"version": "2026-0910-204642-beta" } \ No newline at end of file