Admin message

Am 17.8.2026 werden wir den SSH-Schlüssel des GitLab-Server ändern. Details hierzu finden sich in unserem URZ-Blog unter https://blog.hrz.tu-chemnitz.de/urzcommunity/2026/07/23/ssh-schluessel-gitlab/. Bitte passen Sie ggf. die Liste der vertrauenswürdigen Server-Schlüssel in Ihrem Git-Client an.

On August 17th 2026 we will change the SSH key of the GitLab server. Details are published in our URZ blog under https://blog.hrz.tu-chemnitz.de/urzcommunity/2026/07/23/ssh-schluessel-gitlab/. Please check the trusted key list of your Git client and update it when necessary.

Add option for using SSH Socket
In order to use native SSH keys (git cloning, pushing etc.) inside the container, and restrict SSH keys with a password (but keep them open for a while, without having to enter password every time), this appears like the best strategy: Create a single, shared SSH agent socket when the container boots. By pointing a global environment variable (`SSH_AUTH_SOCK`) to this static path, every terminal opened, and the JupyterLab Git UI extension itself, will all communicate with the exact same agent. ## 1. Update the `Dockerfile.md` We need to add a global environment variable so the Jupyter server and all future terminal sessions know where the socket is. Then, we start the agent right before Jupyter starts. Add this `ENV` declaration anywhere above `CMD` block: ```dockerfile # Define a static SSH agent socket path for the entire container ENV SSH_AUTH_SOCK=/tmp/ssh-agent.sock ``` Next, add the agent startup command to the very beginning of the `CMD` block (so it runs every time the container starts): ```dockerfile CMD source "$CONDA_ACTIVATE_PATH" "$JUPYTER_ENV_PATH"; \ # --- NEW: Start shared SSH agent --- echo "Starting SSH Agent..."; \ rm -f /tmp/ssh-agent.sock; \ ssh-agent -a /tmp/ssh-agent.sock; \ # ----------------------------------- jupyter lab --generate-config; \ # ... (rest of your startup script) ``` *Ensure `openssh-client` is in the `apt-get install` list at the top of the Dockerfile, though it is usually installed alongside `git` by default).* ## 2. Rebuild and Start Rebuild the Docker image and recreate the container: ```bash docker compose build docker compose up -d ``` ## 3. How to use it (The 8-Hour Unlock) Now, when logging into JupyterLab web interface: 1. Open a **Jupyter Terminal**. 2. Run the `ssh-add` command with the `-t` (lifetime) flag in seconds. For 8 hours (8 * 60 * 60 = 28800 seconds): ```bash ssh-add -t 28800 /root/.ssh/id_ed25519 ``` 3. It will prompt you for your passphrase **once**: ```text Enter passphrase for /root/.ssh/id_ed25519: Identity added: /root/.ssh/id_ed25519 (/root/.ssh/id_ed25519) Lifetime set to 28800 seconds ``` Summary * **The Git Extension works:** Because JupyterLab was started with `SSH_AUTH_SOCK=/tmp/ssh-agent.sock`, any buttons you click in the JupyterLab Git UI extension will automatically use the unlocked key. * **All Terminals share it:** You can open 5 different terminal tabs in Jupyter, and they will all share the unlocked key. You don't need to unlock it per-tab. * **Security:** After 8 hours, the agent automatically "forgets" the decrypted key, requiring the passphrase again. If you stop/restart the container, the memory is wiped entirely. To make this even easier for your users, you can add an alias to their `.bashrc` within the `Dockerfile` so they don't have to remember the exact command: ```dockerfile RUN echo "alias unlock-git='ssh-add -t 28800 /root/.ssh/id_ed25519'" >> /root/.bashrc ``` Now, whenever a user opens a terminal, they just type `unlock-git`, enter their password once, and they are good for the entire workday!
task
Nutzungsbedingungen | Datenschutzerklärung | Barrierefreiheitserklärung